javascript - React - 来自父组件的子组件的 setState
问题描述
我有两个组件。一个主组件和一个子组件。
让我们假设在主要组件中触发了一个函数,导致它state
发生了变异。主state
组件的 被作为道具传递给子组件。props
现在应该使用子组件中新更新的数据来设置state
子组件的。
我不能在 ``componentDidUpdate 上执行此操作,因为它会导致无限循环。另一方面,我不想将孩子提升state
到主要组件,因为它的大多数代码在主要组件中都是无用的。
我希望你能帮忙
解决方案
componentDidUpdate
takes prevProps
as argument componentDidUpdate(prevProps, prevState, snapshot)
. So to not getting the code in infinite loop, you can compare this.props
with prevProps
and update the state accordingly.
componentDidUpdate(prevProps) {
if(this.props.data !== prevProps.data) {
// update the new state here this will not cause infinite loop
}
}