【问题标题】:Not able to set state in componentWillReceiveProps in React无法在 React 的 componentWillReceiveProps 中设置状态
【发布时间】:2016-08-28 00:51:52
【问题描述】:

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

但是,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
}

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    它是异步完成的。因此,您可能看不到方法中的更新。在 componentDidUpdate 中检查。

    【讨论】:

    • 谢谢,金子弹!我使用 React 已经有一段时间了,但有时我仍然觉得组件的生命周期有些令人费解。
    【解决方案2】:

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

    this.setState({name: nextProps.site.name} , ()=>{
    
    console.log(this.state.name);
    
    });
    

    【讨论】:

    • 这是一个很棒的提示!谢谢,Alireza!
    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2021-04-27
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多