为什么reactjs中的功能组件没有实例?

tin*_*lyx 5 ecmascript-6 reactjs es6-class

阵营快速启动,更说明有关Refs and Functional Components

您不能在功能组件上使用ref属性,因为它们没有实例:

function MyFunctionalComponent() {
  return <input />;
}

class Parent extends React.Component {
  render() {
    // This will *not* work!
    return (
      <MyFunctionalComponent
        ref={(input) => { this.textInput = input; }} />
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我不完全理解上面的陈述和示例。到目前为止,功能组件和类组件之间的唯一区别在于,后者可以具有构造函数和生命周期管理函数之类的东西。

当文档说功能组件没有实例时,这意味着什么?是因为他们没有this指针吗?此限制来自于react还是ES6?

And*_*aro 4

React 类组件扩展React.component了一个JS 类。它们是React.component生命周期挂钩和内部状态管理等功能的实例,并继承了React.component自身的功能。从这个意义上说,我将它们称为具有实例的组件,因为 React 将使用相同的React.component实例在其生命周期中保留组件状态。

React 函数组件只不过是 JS 函数:它们获取一组属性作为输入并输出一块虚拟 DOM。每次 React 认为生成的虚拟 DOM 可能已过时时,这些函数都会从上到下重新执行。由于普通 JS 函数在设计上不保留任何状态,因此状态持久性被委托给一些名为 hooks 的全局 React API

  • 它们不一定是“纯”函数。 (2认同)