【问题标题】:Difference between React.createClass and <Name> extends ComponentReact.createClass 和 <Name> extends Component 的区别
【发布时间】:2015-11-27 04:06:23
【问题描述】:

我已经阅读了几个 React Native 教程和指南,并且看到这两者的使用方式几乎相同:

var anyName = React.createClass({
  render: function() {
   return (
     ...
   );
  }
});

class anyName extends Component {
  render() {
   return (
     ...
   )
  }
}

不知道它们之间有什么区别。

【问题讨论】:

    标签: javascript ecmascript-6 react-native


    【解决方案1】:

    第一段代码以旧方式(ES5)创建新的JS对象。它只是创建普通的 JS 对象,然后使用 prototypes 用 React 方法和属性填充它。

    React.createClass 方法必须填充实现render 方法的对象。 (您可以阅读有关此方法的更多信息here

    第二个代码使用最新的 JS 标准 (ES6) classesinheritance。事实上ComponentReactComponent,你可以阅读更多关于它的信息here

    请注意,这两种初始化 React 组件的方式会给你带来截然不同的结果。例如,此时您不能将 mixins 与 ES6 继承一起使用,您必须将 bind 方法用于父对象。您可以阅读更多关于差异的信息here

    【讨论】:

    • 太好了,感谢您的解释 - 非常有帮助。所以它们和我想的非常相似,似乎第二种方法扩展组件实际上是一种更新的方法?
    • 是的。现在我在我的项目中使用 ES6 方式。
    • 请注意,通过类方法,您不能使用 mixins,并且必须将上下文与回调绑定!
    • 你说得对,我也发现了这一点。
    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2019-09-23
    • 2018-11-10
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多