我正在使用react上下文来管理某些元素的显示/隐藏,因为这些元素取决于多个服务器调用的返回数据。基于其他状态更改来更新上下文状态的正确方法是什么?
这是我尝试过的方法,因为它变成了无限循环,所以没有用。所有prevState
项都包含null
或服务器返回的数据。
componentDidUpdate(prevProps, prevState) {
this.setState({
showX: (
prevState.a &&
prevState.b &&
prevState.c
),
showY: (
prevState.d
)
})
}
答案 0 :(得分:0)
仅应使用条件语句检查setState
内的componentDidUpdate
,该条件语句检查道具或状态是否确实发生了变化。还可以使用!!
或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
})
}
}