【发布时间】:2020-02-15 06:04:08
【问题描述】:
你好,我正在尝试改变状态,改变一个对象,它被称为无限次
代码
componentDidUpdate (prevState) {
if (prevState.tab !== this.state.tab) {
this.setState((prevState) => ({
...prevState.tableConfiguration,
columns: getColumnsConfig(this.state.tab)
}))
}
}
未捕获的不变违规:超出最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制了嵌套更新的数量以防止无限循环。
任何建议
【问题讨论】:
-
你的条件检查是在 state.tab 上,你不应该在 setState() 中更新它吗?
-
您正在检查
tab是否已更改,因为您正在更改columns.. 而且您正在将tableConfiguration传播到正在改变您的形状的状态看起来不对的状态。 -
getColumnsConfig(this.state.tab)是做什么的? -
@HMR 将一个表的配置更改为另一个,例如,如果我有:表 1:狗,表 2 中的猫我有:马,鹦鹉
-
您正在比较两个对象
{} !== {}始终为真,这会导致无限循环。
标签: reactjs