![](/img/trans.png)
[英]How to Update Component State in Each of Mapped Components When One Changes
[英]How to update one state item based on other state changes?
我正在使用react上下文来管理某些元素的显示/隐藏,因为这些元素取决于多个服务器调用的返回数据。 根据其他状态更改来更新上下文状态的正确方法是什么?
这是我尝试过的方法,但由于它变成了无限循环,因此无法正常工作。 所有prevState
项都包含null
或来自服务器的返回数据。
componentDidUpdate(prevProps, prevState) {
this.setState({
showX: (
prevState.a &&
prevState.b &&
prevState.c
),
showY: (
prevState.d
)
})
}
您应该仅在带条件的语句中调用componentDidUpdate
setState
,该条件语句检查道具或状态是否确实发生了变化。 还可以使用!!
获得布尔值!!
或Boolean constructor
componentDidUpdate(prevProps, prevState) {
const { a, b, c, d } = this.props;
if (a !== prevState.a || b !== prevState.b || c !== prevState.c || d !== prevState.d) {
this.setState({
showX: !!(
prevState.a &&
prevState.b &&
prevState.c
),
showY: !!prevState.d
})
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.