我应该使用什么反应生命周期来更新来自axios GET方法的信息在组件上的本地状态?
到目前为止,我尝试了componentDidMount
,但轴距尚未完成,因此道具为空[]
。
我也尝试过componentDidUpdate
。出乎意料的是,axios GET已在此处完成,但是当我尝试更新状态时,我收到了“最大更新深度超出”的警告。
我的代码示例如下:
componentDidUpdate() {
const {item} = this.props; // this is coming from axios
this.setState({
...
});
}
答案 0 :(得分:1)
在setState函数之前检查项目相等性值,如下所示:
componentDidUpdate(prevProps) {
const {item} = this.props; // this is coming from axios
if(prevProps.item === item) return;
this.setState({
...
});
}
答案 1 :(得分:0)
正如他们在文档中所说:https://reactjs.org/docs/react-component.html#componentdidupdate:
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
您一直在调用setState,这会导致无限循环。