【问题标题】:Is it necessary for a React component to extend from React.Component?React 组件是否需要从 React.Component 扩展?
【发布时间】:2015-10-06 10:44:51
【问题描述】:

在 React 0.13 之后,我们可以使用 ES6 类来创建像上面这样的 React 组件:

class A extends React.Component {
  // ...
}

但是,如果我偶尔忘记输入 extends React.Component,只要我不使用像 this.setState() 这样的简单方法,组件 A 仍然可以正常工作。

我开始认为 React 组件有必要从 React.Component 扩展。

在像 FLUX 或 Redux 这样的架构中,有智能 React 组件和哑 React 组件。智能组件连接到数据存储,而哑组件只接收来自父母的 props 和渲染。我已经知道在 React 0.14 中我们可以简单地编写一个纯哑巴的功能。

然而,在智能组件中,也存在一些组件有状态而一些没有状态的区别。如果键入 extends React.Component 和 not 之间的区别只是 this.setState(),我只是不 extends React.Component 当我的组件没有'不需要管理自己的状态。

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    React 组件是否需要从 React.Component 扩展?

    不在 React v0.13 中,而是在 it will be in v0.14

    ES6 组件类现在必须扩展 React.Component 才能启用无状态功能组件。 ES3 module pattern 将继续工作。

    所以为了支持函数作为简单的无状态组件(你提到的),似乎类需要扩展React.Component

    【讨论】:

    • 但是为什么“ES6 组件类现在必须扩展 React.Component 才能启用无状态功能组件”?
    • 正确识别什么是无状态函数,什么是代表组件类的构造函数。构造函数必须用new 调用,无状态函数不应该。在 GitHub 问题中有一个完整的主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2017-02-25
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多