React:在构造函数中设置状态与仅在类中设置状态之间的核心区别是什么?

时间:2018-10-02 22:49:45

标签: javascript reactjs state

这里的核心区别是什么?我以相似的方式成功地使用了这两种方法。但是,幕后正在发生什么,使它们与众不同,何时应使用每种方法?

class Store extends React.Component { 
  constructor(props){
    super(props)
    this.state =  {
      checked: false
    }
}

vs。

class Store extends React.Component { 
  state = { checked: false }
}

1 个答案:

答案 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;
  }
}