ComponentDidUpdate使用setState无限次调用

时间:2019-10-18 09:06:33

标签: reactjs

你好,我正在尝试更改状态,将对象更改为无限次

代码

componentDidUpdate (prevState) {
    if (prevState.tab !== this.state.tab) {
        this.setState((prevState) => ({
            ...prevState.tableConfiguration,
            columns: getColumnsConfig(this.state.tab)
        }))
    }
}
  

未捕获的恒定违反:超出最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,可能会发生这种情况。 React限制了嵌套更新的数量,以防止无限循环。

任何建议

1 个答案:

答案 0 :(得分:0)

感谢您的评论,我找到了一种解决方案。

componentDidUpdate (prevProps, prevState) {
    if (prevState.tab !== this.state.tab) {
        const newConfig = {
            ...prevState.tableConfiguration,
            columns: getColumnsConfig(this.state.tab)
        }
        this.setState({ tableConfiguration: newConfig })
    }
}