Javascript 在componentDidUpdate上更新react状态时超过最大更新深度
我应该使用什么生命周期来使用来自axios GET方法的信息更新组件上的本地状态 到目前为止,我尝试了Javascript 在componentDidUpdate上更新react状态时超过最大更新深度,javascript,reactjs,Javascript,Reactjs,我应该使用什么生命周期来使用来自axios GET方法的信息更新组件上的本地状态 到目前为止,我尝试了componentDidMount,但是axios没有在那里完成,因此道具是空的[]。 我还尝试了componentdiddupdate。令人惊讶的是,axios GET在这里完成了,但是当我尝试更新状态时,我得到了超过最大更新深度的警告 我的代码示例如下: componentDidUpdate() { const {item} = this.props; // this is comin
componentDidMount
,但是axios没有在那里完成,因此道具是空的[]
。
我还尝试了
componentdiddupdate
。令人惊讶的是,axios GET在这里完成了,但是当我尝试更新状态时,我得到了超过最大更新深度的警告
我的代码示例如下:
componentDidUpdate() {
const {item} = this.props; // this is coming from axios
this.setState({
...
});
}
正如他们在文件中所说:
您一直在调用setState,这会导致无限循环。在setState函数之前检查项相等值,如下所示:
componentDidUpdate(prevProps){
const{item}=this.props;//这是来自axios的
如果(prevProps.item==item)返回;
这是我的国家({
...
});
}
componentdiddupdate
在每次组件更新(状态或道具更改)时运行。如果您在componentdiddupdate
中无条件调用setState
,则您遇到了一个问题。是否可以共享父组件和此组件的其余代码?帮助您会更容易为什么不在axios的内部设置state
。然后()!这就是我一直错过的!谢谢你的帮助!
You may call setState() immediately in componentDidUpdate() but note that
it must be wrapped in a condition like in the example above, or you’ll
cause an infinite loop