Javascript 在componentDidUpdate上更新react状态时超过最大更新深度

Javascript 在componentDidUpdate上更新react状态时超过最大更新深度,javascript,reactjs,Javascript,Reactjs,我应该使用什么生命周期来使用来自axios GET方法的信息更新组件上的本地状态 到目前为止,我尝试了componentDidMount,但是axios没有在那里完成,因此道具是空的[]。 我还尝试了componentdiddupdate。令人惊讶的是,axios GET在这里完成了,但是当我尝试更新状态时,我得到了超过最大更新深度的警告 我的代码示例如下: componentDidUpdate() { const {item} = this.props; // this is comin

我应该使用什么生命周期来使用来自axios GET方法的信息更新组件上的本地状态

到目前为止,我尝试了
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