导出createClass和扩展Component之间的React / es6差异

时间:2015-10-05 13:19:04

标签: javascript reactjs ecmascript-6

我开始使用react和es6并尝试确定

之间的真正区别
Dim cell As Range

For Each cell In Range("C1", Range("C1").End(xlDown))
    cell.Value = Left$(cell.Value, 6) & "59"
Next

export const Voting = React.createClass({ ... })

似乎我可以用两者达到同样的预期效果(当然,除非我是错的)。如果没有差别,我想我更喜欢第二种格式,但我似乎无法弄清楚真正的区别是什么。非常感谢任何和所有的投入,谢谢!

1 个答案:

答案 0 :(得分:4)

来自blog post that announced ES6 class support

  

JavaScript最初没有内置的类系统。每个流行的框架都是自己构建的,我们也是如此。这意味着您可以为每个框架学习稍微不同的语义。

     

我们认为我们不是在设计类系统的业务。我们只想使用任何习惯的JavaScript方法来创建类。

     

在React 0.13.0中,您不再需要使用React.createClass来创建React组件。如果你有一个转换器,你今天可以使用ES6课程。

因此,两者都做同样的事情(定义一个React组件),但ES6类是更原生的方式(没有自定义的React样板代码),因此更容易推理代码。这应该是创建React组件的首选方法。

虽然React.createClass和ES6课程之间存在两个显着差异(在该博文中也有提及):

  • Autobinding - React.createClass自动将所有方法发送到当前实例。使用ES6课程,您必须自己完成。

  • Mixins - ES6课程对React.createClass之类的mixins没有直接支持。