javascript - React isValidElement 结果为 false

标签 javascript reactjs

这是一个简单的例子:

const Foo = () => {
    return (
    <div>foo</div>
  );
}

class Bar extends React.Component {
    render() {
    return (
        <div>bar</div>
    )
  }
}

console.log(React.isValidElement(Foo));
console.log(React.isValidElement(Bar));

这两个都返回 false。这是为什么?

最佳答案

Component != Element

FooBar组件元素 基本上是“实例化”(也不是真的,不确定正确的术语是什么)组件的结果。它是构造函数/函数/字符串(对于 HTML 组件)、 Prop 和子项的组合。

调用 React.createElement(Foo) 时会得到一个元素,这就是<Foo />正在幕后进行。

const Foo = () => {
    return (
    <div>foo</div>
  );
}
console.log(React.isValidElement(<Foo />));
console.log(<Foo bar={42} />);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

关于javascript - React isValidElement 结果为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46432955/

相关文章:

javascript - 测试innerHTML的部分字符串

javascript - 如何将项目添加到 Adob​​e Flash 上下文菜单?

javascript - 如何将表单中的对象数据置于特定属性下

javascript - 索引包 block 太大

javascript - jQuery delegate()/on() - 强制事件顺序

javascript - 从 Angular.js 中的指令 Controller 调用工厂

javascript - 将有状态组件转换为无状态组件

unit-testing - 如何使用 Karma 和 PhantomJS 正确地对 ReactDOM.render 进行单元测试?

reactjs - 条件渲染适用于无状态功能组件,但不适用于有状态

javascript - 由于 iOS 12.4 iframe 无法更改顶部 url