在React的子组件的componentDidUpdate中读取先前的父状态

时间:2019-06-04 08:55:49

标签: javascript reactjs

具有这样声明的组件:

<MyComp value={this.state.form1.val1} />

在MyComp componentDidUpdate内部,我想知道state.form1.val1的先前值是什么 (通过先前的值,我指的是先前状态对象的val1属性的值)

export default class MyComp extends React.Component {
...
      componentDidUpdate(prevProps, prevState) {
       // compare current value of val1 with previous value of val1
       // prevState is null here becuase MyComp has no state, its parent has state
      }
}

2 个答案:

答案 0 :(得分:2)

您有2种选择:

  • 在{strong>父级组件的componentDidUpdate中发挥优势。
  • 通过道具传递并在子组件
  • componentDidUpdate中捕获

父组件

<MyChildComponent myProp={this.state.myValue} />

子组件

    componentDidUpdate(prevProps, prevState) {
      console.log(prevProps.myProp)
    }

请注意,当状态改变或收到新的道具时,React的组件会触发componentDidUpdate

答案 1 :(得分:1)

父组件state.form1.val1的先前值将是prevProps.value的{​​{1}}内的componentDidUpdate。当前值将是MyComp中的this.props.value

您不能直接从子组件内部访问父组件的状态,只能访问显式传递的东西。