Javascript 创建React组件时,我应该使用功能组件React.createClass还是扩展React.Component?

Javascript 创建React组件时,我应该使用功能组件React.createClass还是扩展React.Component?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我是一个新的反应,并且已经读了很多关于它的文章。我遇到了三种创建组件的不同方法: 功能组件: const Hello = ({world}) => { return ( <div>{"Hello" + world}</div> ); } const Hello = React.createClass({ render: function() { return <div>{"Hello" + this.props.w

我是一个新的反应,并且已经读了很多关于它的文章。我遇到了三种创建组件的不同方法:

功能组件:

const Hello = ({world}) => {
  return (
    <div>{"Hello" + world}</div>
  );     
}
const Hello = React.createClass({
  render: function() {
    return <div>{"Hello" + this.props.world}</div>
  }
});
const Hello=({world})=>{
返回(
{“你好”+世界}
);     
}
React.createClass(工厂):

const Hello = ({world}) => {
  return (
    <div>{"Hello" + world}</div>
  );     
}
const Hello = React.createClass({
  render: function() {
    return <div>{"Hello" + this.props.world}</div>
  }
});
const Hello=React.createClass({
render:function(){
返回{“Hello”+this.props.world}
}
});
ES6等级扩展

class Hello extends React.Component {
  render() {
    return (
      <div>{"Hello" + this.props.world}</div>
    );
  }
}
类Hello扩展了React.Component{
render(){
返回(
{“Hello”+this.props.world}
);
}
}
除了显而易见的功能组件没有任何状态耦合到它之外,这可能是一种更功能化的组件制作方法,为什么我要使用不同的方法呢


在React文档中,他们使用所有三种方法。有些文章建议使用类方法,有些则建议使用工厂方法。

对于无状态的组件,建议使用functional

如果使用ES6+/TypeScript代码,建议使用
React.Component
extend。React Native仅支持这种类型的组件创建

React.createClass
用于ES5

浏览器很快就会有一个完整的支持,Facebook推荐使用和使用

编辑


Facebook添加了一个新组件,并指出用户可以使用它。

据我所知,当您只需要创建表示逻辑组件时,建议使用功能组件。对于具有任何逻辑的组件,我们使用smth,如React.createClass()

有两种方法可以做到这一点:

首先,创建通用组件,然后根据表示逻辑和业务逻辑对其进行划分

第二,您可以在旁边创建它们

小心!当划分这些组件时,您的业务逻辑必须呈现您的表示逻辑


有关更多实践,请参阅codecademy上的教程

,但Facebook也建议使用功能性无状态组件,这些组件不需要保持状态,也不需要生命周期方法(onComponentDidMount、shouldComponentUpdate等),我想这就解释了这一点。尽可能使用功能组件(将来会有性能优化)。建议这样做。当组件中需要本地状态或生命周期挂钩时,请使用ES6类语法。