根据这份 babel文档,将ES6 +与React结合使用的正确方法是对初始组件进行如下处理:
class Video extends React.Component { static defaultProps = { autoPlay: false, maxLoops: 10, } static propTypes = { autoPlay: React.PropTypes.bool.isRequired, maxLoops: React.PropTypes.number.isRequired, posterFrameSrc: React.PropTypes.string.isRequired, videoSrc: React.PropTypes.string.isRequired, } state = { loopsRemaining: this.props.maxLoops, } }
但是一些官方示例,例如Dan Abramov自己的React DnD模块,使用ES6 +,但仍在构造函数中定义状态:
constructor(props) { super(props); this.moveCard = this.moveCard.bind(this); this.state = { // state stuff } }
现在,作为React的重要贡献者的Dan Abramov可能知道他可以在构造函数之外定义状态,但仍然选择在构造函数内完成状态。
所以我只是想知道哪种方法更好,为什么呢?
我认为这是个人喜好问题。就语义而言,转译的输出是相同的。