我真的不明白反应生命周期。我在 componentDidUpdate() 中运行 console.log 并看到它运行了多次 控制台显示 componentDidUpdate 运行了 3 次
问问题
10803 次
2 回答
7
当你的问题发生时,也许我可以给你一个额外的例子,因为我看不到你的代码。
componentDidUpdate(prevProps, prevState) {
const { something } = this.props;
if (prevProps.something !== something) this.apiCall();
console.log('something')
}
当您更改状态或道具时,componentDidUpdate
正在调用,并且 apiCall 函数通过fetch
or发出 http 请求axios
,并使用函数更改状态两次setState
。
每当state
发生更改时,都会render()
调用并componentDidUpdate
遵循新的。
但条件
if (prevProps.something !== something) this.apiCall();
可能不再满足,此时只需控制台日志记录,而不是调用apiCall
会触发无限循环的函数。
希望能帮助到你。
于 2019-03-01T06:40:21.390 回答
4
componentDidUpdate()
在更新发生后立即调用。
您的问题可能会因为状态已更改、收到的道具或父级重新渲染而得到解决。
如果您是 React 新手,我建议您阅读以下文章: Post-Render with componentDidUpdate()
于 2018-11-24T10:32:41.293 回答