这里的核心区别是什么?我以相似的方式成功地使用了这两种方法。但是,幕后正在发生什么,使它们与众不同,何时应使用每种方法?
class Store extends React.Component {
constructor(props){
super(props)
this.state = {
checked: false
}
}
vs。
class Store extends React.Component {
state = { checked: false }
}
答案 0 :(得分:2)
这两种方法没有“应该”。您的第二个示例是一个新建议:class-fields。就是这个。因此,如果您不需要使用constructor
,则可以跳过它并定义您的state
,如果需要也可以定义类方法,例如第二个示例。
您需要Babel和specific plugin才能使用此新提案。由于您可以成功使用它,这意味着您已经有了此插件。在后台,您的第二个代码被编译成如下所示:
class Store extends React.Component {
constructor(...args) {
var _temp;
return (_temp = super(...args)), (this.state = { checked: false }), _temp;
}
}