React.Component与React.createClass
我很困惑组件和反应类之间的区别是什么?
什么时候在一个反应类上使用一个组件? 看起来像一个组件是一个类,createClass创build一个组件。
https://facebook.github.io/react/docs/top-level-api.html
React.Component
这是React Components使用ES6类定义的基类。 有关如何使用React的ES6类,请参阅可重用组件。 对于基类实际提供的方法,请参阅组件API。
React.createClass
根据规范创build一个组件类。 一个组件实现一个返回一个单独的孩子的渲染方法。 那个孩子可能有一个任意深的孩子结构。 使组件与标准原型类不同的一件事是,你不需要对它们调用新的东西。 他们是方便包装,为您构build支持实例(通过新的)。
 唯一不被MyComponent extends React.Component支持的React.createClassfunctionMyComponent extends React.Component是mixins。 
 要做getInitialState()你可以这样做: 
 class MyComponent extends React.Component { constructor(props, context) { super(props, context); // initial state this.state = { counter: 0 }; } ... } 
或者如果你使用像babel这样的翻译,你可以得到
 class MyComponent extends React.Component { state = { counter: 0 } ... } 
 除了createClass提供的自动绑定之外,您可以使用.bind(this)显式绑定,如上所示,或者使用胖箭头ES6语法: 
 class MyComponent extends React.Component { onClick = () => { // do something } ... } 
不要把东西放在componentWillMount中,你可以把东西放在构造函数中,如下所示:
 class MyComponent extends React.Component { constructor(props, context) { super(props, context); // what you would have put in componentWillMount } ... } 
React文档本身还有更多的细节,但基本上React.createClass购买的唯一附加function是mixin,但afaik可以使用上下文和更高级的组件来完成。
他们是做同样的事情的两种方式。
  React.createClass是一个返回Component类的函数。 
 MyComponent = React.createClass({ ... }); 
  React.Component是您可以扩展的现有组件。 使用ES6时主要有用。 
 MyComponent extends React.Component { ... } 
  React.createClass – 创build组件类的方法 
 为了更好地使用ES6模块,扩展了React.Component ,它扩展了Component类而不是调用createClass 
两者之间几乎没有差别,
语法: React.createClass:
 var MyComponent = React.createClass({ }); 
React.Component:
 export default class MyComponent extends React.Component{ } 
getInitialState(): React.createClass:是React.Component:否
构造函数(): React.createClass:无React.Component:是
propTypes语法: React.createClass:
 var MyComponent = React.createClass({ propTypes: { } }); 
React.Component:
 export default class MyComponent extends React.Component{ } MyComponent.prototypes = { } 
默认属性: React.createClass:
 var MyComponent = React.createClass({ getDefaultProps(): { return {} } }); 
React.Component:
 export default class MyComponent extends React.Component{ } MyComponent.defaultProps = { } 
状态: React.createClass:
 State changes can be made inside getInitialState() function 
React.Component:
 State changes can be made inside constructor(props) function 
  这个 : 
  React.createClass: 
 automatically bind 'this' values. Ex: <div onClick={this.handleClick}></div> 'this' can be accessed by default in handleClick function 
React.Component:
 whereas here we need to bind explicitly, Ex: <div onClick={this.handleClick.bind(this)}></div> 
 这看起来像Reactbuild议我们使用React.createClass 
我所知道的
- 
MyComponent extends React.Component不支持getInitialState()
- 
在 React.createClass使用.bind(this),你会得到这个警告:bind():您正在将组件方法绑定到组件。 React以高性能的方式自动执行此操作,因此您可以安全地删除此调用。 
我想这可能不止于此。
 如果有人列出所有的React.createClassfunction将会如此之大。 
注意:React目前在0.14.3