无法在React中的componentWillReceiveProps中设置状态

时间:2016-08-26 16:52:27

标签: reactjs

我正在尝试使用父组件收到的新道具更新组件的状态。

然而,setState调用似乎并没有像我期望的那样工作。

我理解componentWillReceiveProps不会重新渲染组件,但它似乎甚至不允许进行setState调用。

任何想法我可能做错了什么?

代码:

componentWillReceiveProps (nextProps) {
  this.setState({name: nextProps.site.name});
  console.log(nextProps.site.name); // logs the updated name
  console.log(this.state.name); // logs the old name, even after presumably being set again
}

2 个答案:

答案 0 :(得分:5)

它以异步方式完成。因此,您可能无法在方法中看到更新。检查componentDidUpdate中的内容。

答案 1 :(得分:3)

您可以在setState回调中看到结果,如下所示:

this.setState({name: nextProps.site.name} , ()=>{

console.log(this.state.name);

});