React.createClass和<name>之间的区别扩展了Component

时间:2015-11-27 04:06:24

标签: javascript ecmascript-6 react-native

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

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

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

不确定它们之间有什么区别。

1 个答案:

答案 0 :(得分:4)

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

必须使用实现React.createClass方法的对象填充

render方法。 (您可以阅读有关此方法的更多信息here

第二个代码使用最新的JS标准(ES6)继承。实际上ComponentReactComponent,您可以阅读更多相关信息here

请注意,这两种初始化React Component的方法会给你带来明显不同的结果。例如,此时您不能使用mixins进行ES6继承,并且必须使用bind方法来创建父对象。您可以阅读有关差异here的更多信息。