【发布时间】:2020-08-07 10:22:13
【问题描述】:
我正在尝试在 render 方法中进行状态更改,但它显示:
错误:超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制了嵌套更新的数量以防止无限循环。
class Test extends Component {
state = {
name:[],
}
render() {
this.setState({name:this.props.data})
return(
<div>
{this.state.name.map(e=>(
<h3>{e}</h3>
))}
</div>
);
}
}
【问题讨论】:
-
你不能这样做,因为
setState调用了render,render调用了setState等等……你最终会陷入死循环。 -
是的。我想知道在渲染 dom 之前更新状态的最佳位置是什么。
-
但是你为什么要用已经处于状态的数据来更新状态呢? :) 通常在 React 中,您使用事件处理程序来更新状态。
-
道具呢?如果有我必须更新到当地状态的道具?
-
这是一些精简的例子,还是你真的想这样做?直接从道具渲染,即
this.props.data.map(e => <h3>{e}</h3>)
标签: reactjs components state jsx