我开始使用react和es6,并试图确定之间的真正区别
export const Voting = React.createClass({ ... })
和
class Voting extends React.Component { ... }
看来我可以同时达到两者的预期效果(当然,除非我错了)。我认为如果没有区别,我会更喜欢第二种格式,但是我似乎无法弄清楚真正的区别是什么。将不胜感激,谢谢!
从宣布支持ES6类的博客文章中:
JavaScript最初没有内置的类系统。每个流行的框架都建立自己的框架,我们也是如此。这意味着您将了解每种框架的语义稍有不同。 我们认为我们不打算设计类系统。我们只想使用惯用的JavaScript创建类的方法。 在React 0.13.0中,您不再需要React.createClass用于创建React组件。如果您有转译器,则可以今天使用ES6类。
JavaScript最初没有内置的类系统。每个流行的框架都建立自己的框架,我们也是如此。这意味着您将了解每种框架的语义稍有不同。
我们认为我们不打算设计类系统。我们只想使用惯用的JavaScript创建类的方法。
在React 0.13.0中,您不再需要React.createClass用于创建React组件。如果您有转译器,则可以今天使用ES6类。
React.createClass
因此,两者都做同样的事情(定义一个React组件),但是ES6类是更本地的实现方式(没有自定义的React样板代码),因此推理代码要容易得多。这应该是创建React组件的首选方式。
React.createClass不过,和ES6类之间有两个显着差异(也在该博客文章中提到):
自动绑定 - React.createClass将所有方法自动绑定到当前实例。使用ES6类,您必须自己做。
Mixins -ES6类不像React.createClass以前那样直接支持Mixins 。