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

IT技术 reactjs
2021-05-09 10:41:22

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

但是, 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个回答

它是异步完成的。所以你可能看不到方法中的更新。在 componentDidUpdate 中检查。

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

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

console.log(this.state.name);

});