为什么componentDidUpdate多次运行

时间:2018-11-15 18:05:10

标签: reactjs react-lifecycle

我真的不了解反应的生命周期。我在componentDidUpdate()中运行console.log,看到它多次运行 Console showed that componentDidUpdate ran 3 times

2 个答案:

答案 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函数通过fetchaxios发出http请求,并使用setState两次更改状态功能。

每次更改state时,都会调用新的render()并跟随componentDidUpdate

但条件

if (prevProps.something !== something) this.apiCall();

可能不再满足,只是此时控制台记录而不是调用apiCall函数,后者会触发无限循环。

希望有帮助。