【问题标题】:Why can't I use instanceof to determine whether an element is an instance of a component?为什么我不能使用 instanceof 来确定一个元素是否是组件的实例?
【发布时间】:2020-05-15 02:29:05
【问题描述】:

我想知道 React 在幕后做了什么,它使代表组件的 DOM 节点的对象成为创建它的函数的实例。

为什么 React 使用 type 属性而不是原型?

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

const instance = <Parent />

console.log(instance instanceof Parent); // False
console.log(instance.type === Parent); // True
console.log(instance.prototype === Parent) // False

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    当你写一个 JSX,比如

    const instance = <Parent />
    

    它被转译为React.createElement(Parent, {});,它只返回一个对象

    您可以在instance 上登录并查看回复。如下图所示

    现在这个对象 isn't an instance of Parent 但有一个类型属性设置为 Parent

    但是如果你写

    const instance = new Parent();
    

    然后如果你检查

     console.log(instance instanceof Parent); // true
    

    这会返回 true,因为现在 instance 是 Parent 的一个实例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多