【问题标题】:How to update react component state based on props如何根据 props 更新 React 组件状态
【发布时间】:2018-11-23 11:17:07
【问题描述】:

如何在 props 更改时强制 react 组件更新状态?

我一直在用的方法:

componentWillReceiveProps(nextProps){
    this.setState({key:nextProps}); 
    console.log(this.state);
  }

控制台显示 nextProps 是已定义的值,但 this.state.key 仍未定义。

谢谢!

【问题讨论】:

  • 你想完成什么?如果您从 props 中获取状态,最好在 render 中进行这些计算,而不是更新状态。
  • 我正在开发一个包含 2 个主要组件的应用程序。第一个发送一个 onlick ajax 请求,然后通过 props 将该信息传递给第二个组件。当道具改变时,我需要更新第二个组件。
  • @JSX 组件会在 props 更改时自行更新。为此,您不需要在状态中添加它。

标签: javascript reactjs state react-props react-state-management


【解决方案1】:

控制台日志 this.state 显示未定义,因为 setState 是异步的。因此,当您执行 setState 时,它​​不会立即更新状态,这就是控制台日志不显示更新状态的原因。

你应该这样做:

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

当 setState 发生时,定义为第二个参数的回调被调用,然后我们更新了状态。

【讨论】:

猜你喜欢
  • 2017-09-23
  • 2017-01-02
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多