如何根据其他状态更改来更新一个状态项?

时间:2018-11-28 11:50:13

标签: javascript ajax reactjs react-context react-state

我正在使用react上下文来管理某些元素的显示/隐藏,因为这些元素取决于多个服务器调用的返回数据。基于其他状态更改来更新上下文状态的正确方法是什么?

这是我尝试过的方法,因为它变成了无限循环,所以没有用。所有prevState项都包含null或服务器返回的数据。

componentDidUpdate(prevProps, prevState) {
  this.setState({
    showX: (
      prevState.a &&
      prevState.b &&
      prevState.c
    ),
    showY: (
      prevState.d
    )
  })
}

1 个答案:

答案 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
    })
  }

}