我真的不了解反应的生命周期。我在componentDidUpdate()中运行console.log,看到它多次运行 Console showed that componentDidUpdate ran 3 times
答案 0 :(得分:1)
componentDidUpdate()
在更新发生后立即被调用。
您的问题可能是因为状态已更改,收到的道具或父母的礼物已重新出现。
如果您不熟悉React,建议您阅读以下文章: Post-Render with componentDidUpdate()
答案 1 :(得分:1)
由于您看不到您的代码,也许当您的问题发生时,我可以给您一个额外的例子。
componentDidUpdate(prevProps, prevState) {
const { something } = this.props;
if (prevProps.something !== something) this.apiCall();
console.log('something')
}
当您更改状态或道具时,componentDidUpdate
被调用,并且apiCall函数通过fetch
或axios
发出http请求,并使用setState
两次更改状态功能。
每次更改state
时,都会调用新的render()
并跟随componentDidUpdate
。
但条件
if (prevProps.something !== something) this.apiCall();
可能不再满足,只是此时控制台记录而不是调用apiCall
函数,后者会触发无限循环。
希望有帮助。