根据this 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
}
}
现在,Dan Abramov 作为 React 的重要贡献者,可能知道他可以在构造函数之外定义状态,但仍然选择在构造函数内执行此操作。
所以我只是想知道哪种方式更好,为什么?
最佳答案
我认为这是个人喜好问题。转译后的输出在语义上是相同的。
关于reactjs - 在构造函数中定义状态更好还是使用属性初始值设定项更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788342/