如何在React16.x的componentWillReceiveProps生命周期中初始化状态?

时间:2017-12-25 17:56:54

标签: reactjs lifecycle

我曾经使用this.state =来初始化componentWillReceiveProps中的状态 顺便说一句,它在React16.x中已被弃用 建议使用this.setState而不是this.state =。 但是我必须在componentWillReceiveProps中初始化状态,因为如果我使用this.setState函数,一些旧状态仍然存在。 你有什么主意吗? 请建议我。 感谢

2 个答案:

答案 0 :(得分:2)

问题是您正在其中一个生命周期方法中初始化状态 - 您只想在构造函数中执行此操作。

通常,您在构造函数中初始化状态,或使用setInitialState

constructor() {
  this.state = { foo: 'bar' }
}

componentWillReceiveProps() {
  this.setState({ foo: 'baz' })
}

从那里,您可以在生命周期方法中调用setState

对于初始化状态,您可以在构造函数中使用this.state = {},并更新状态调用this.setState()

另外,你提到了这个......

  

顺便提一下,它已在React16.x中弃用了。建议使用this.setState而不是this.state =

你能指点我在文档中看到的地方吗?根据{{​​3}},在反应生命周期方法的上下文中,setState的行为方式有一些变化,但我还没有找到任何可以验证您的声明的内容

答案 1 :(得分:0)

每当你在reactjs中定义任何方法时,都要这样做:

increment: function(){
       this.setState({
        count: this.state.count + 1
       })
     }

//我在这里为先前的计数状态添加了一些内容。