何时在构造函数(props)上使用纯状态?

时间:2019-04-12 18:21:18

标签: javascript reactjs

我知道他们是类似的问题,但是我仍然对以下内容感到困惑。

何时使用这种状态

Class Example extends Component {
  state = {
    name: ''
  }

 }

在构造器道具上

Class Example extends Component{ 

  constructor(props) {
    super(props);

    this.state = {
      name: ''
    }
  }
}

它与方法绑定有关吗?因为我可以很好地使用onChange而不用像这样绑定它:

this.onChange = this.onChange.bind(this) 

我仍然可以像这样致电onChange

onChange = (e) => {

}

<Component onChange = {this.onChange} />

2 个答案:

答案 0 :(得分:2)

示例中的差异纯粹是语法上的,而不是功能上的。您可以同时使用这两种效果。

通常,当您要基于某些运行时逻辑(例如,基于传递的props)来计算状态时,可以在构造函数中分配状态。在这种情况下,您将这样写:

class Example extends Component {
  constructor(props) {
    this.state = {
      fullName: props.firstName + ' ' + props.lastName
    }
  }
}

答案 1 :(得分:1)

在反应新版本中,您可以直接初始化状态,而无需使用

constructor(Props){
super(props)
this.state ={
}
}

它们都是正确的。您可以使用它们中的任何一个。

我会选择第一个,因为它的代码更少

,对于任何方法,您都可以直接使用它们,例如

  onChange = (e) => {

    }

<Component onChange = {this.onChange} />

在新版本的react中无需绑定方法