Hasty Briefsbeta

双语

How Does React Tell a Class from a Function? — overreacted

13 hours ago
  • React 根据组件是函数还是类来区别对待,需要直接调用函数或用 `new` 实例化类并调用 `render`。
  • JavaScript 中的 `new` 运算符用于为类构造函数创建对象,但将其用于箭头函数或非类函数会导致错误或意外行为。
  • React 不能简单地对所有组件使用 `new`,因为这会破坏箭头函数并阻止对原始返回类型的支持。
  • React 通过检查原型上特殊的 `isReactComponent` 标志来区分类和函数,该标志被添加到 `React.Component` 上。
  • 使用 `instanceof` 检查类继承不可靠,因为存在多个 React 副本以及某些转译代码中缺少静态属性等问题。
  • `React.Component.prototype` 上的 `isReactComponent` 标志为 React 提供了一种实用且可靠的方法来确定组件类型。