javascript - 在创建 React 组件时,我应该使用功能组件,React.createClass 还是 extends React.Component?

标签 javascript reactjs ecmascript-6

我是 React 的新手,并且已经阅读了很多有关它的资料。我遇到了三种不同的方法来创建组件:

功能组件:

const Hello = ({world}) => {
  return (
    <div>{"Hello" + world}</div>
  );     
}

React.createClass(工厂):

const Hello = React.createClass({
  render: function() {
    return <div>{"Hello" + this.props.world}</div>
  }
});

ES6 类扩展

class Hello extends React.Component {
  render() {
    return (
      <div>{"Hello" + this.props.world}</div>
    );
  }
}

除了明显的功能组件没有任何状态耦合并且可能是一种更功能化的组件处理方法之外,我为什么要使用不同的方法?

在 React 文档中,他们使用了所有三种方法。一些 Stack Overflow文章建议使用 Class 方法,然后一些建议使用 Factory 方法。

最佳答案

对于无状态的组件,建议使用函数式。

如果您正在使用 ES6+/TypeScript 代码,建议使用 React.Component extend。 React Native 仅支持这种类型的组件创建。

React.createClass 用于 ES5。

浏览器即将全面支持Facebook推荐使用React.Component instead of React.createClass并使用 functional for stateless .

编辑

Facebook 添加了一个 deprecation warning to React.createClass in React 15.6.0并点用户使用create-react-class相反。

关于javascript - 在创建 React 组件时,我应该使用功能组件,React.createClass 还是 extends React.Component?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069486/

相关文章:

javascript - 如何在 JavaScript 中设置 `appendLink`?

javascript - 如何从输入更改 src?

javascript - Router.push() 在不同时间工作方式不同

javascript - 省略数组中具有空字符串的对象键

javascript - 在 PyCrypto AES MODE_CTR 中包含 nonce 和 block 计数

javascript - 在 html-table 中设置某个 td 的文本 - jquery

html - 在 create-react-app 中将图像直接加载到 index.html 的问题

javascript - React - 计算仅部分工作的元素之间的较大值

javascript - 箭头函数在使用 babel 的 React 组件中被认为是意外标记

javascript - ES2015 规范附录 E 中的此条目有何意义?