Reactjs 为什么componentDidUpdate运行多次

Reactjs 为什么componentDidUpdate运行多次,reactjs,react-lifecycle,Reactjs,React Lifecycle,我真的不了解生命周期。我在componentDidUpdate中运行console.log,发现它运行了多次 更新发生后立即调用componentDidUpdate 您的问题可能会因为状态已更改、收到道具或家长重新渲染而被授予 如果您是React新手,我建议您阅读以下文章: 更新发生后立即调用componentDidUpdate 您的问题可能会因为状态已更改、收到道具或家长重新渲染而被授予 如果您是React新手,我建议您阅读以下文章: 由于我看不到您的代码,当您的问题发生时,也许我可以给您一个

我真的不了解生命周期。我在componentDidUpdate中运行console.log,发现它运行了多次

更新发生后立即调用componentDidUpdate

您的问题可能会因为状态已更改、收到道具或家长重新渲染而被授予

如果您是React新手,我建议您阅读以下文章:

更新发生后立即调用componentDidUpdate

您的问题可能会因为状态已更改、收到道具或家长重新渲染而被授予

如果您是React新手,我建议您阅读以下文章:
由于我看不到您的代码,当您的问题发生时,也许我可以给您一个额外的示例

componentDidUpdate(prevProps, prevState) {
        const { something } = this.props;
        if (prevProps.something !== something) this.apiCall();
        console.log('something')
}
当您更改状态或道具时,将调用componentDidUpdate,apiCall函数通过fetch或axios发出http请求,并使用setState函数更改两次状态

无论何时更改状态,都会调用新的呈现,并随后执行componentDidUpdate

但是条件

if (prevProps.something !== something) this.apiCall();
可能不再满足,此时只需控制台日志记录,而不是调用apiCall函数,该函数将触发INIFIENT循环


希望能有所帮助。

由于我看不到您的代码,当您的问题发生时,也许我可以给您一个额外的示例

componentDidUpdate(prevProps, prevState) {
        const { something } = this.props;
        if (prevProps.something !== something) this.apiCall();
        console.log('something')
}
当您更改状态或道具时,将调用componentDidUpdate,apiCall函数通过fetch或axios发出http请求,并使用setState函数更改两次状态

无论何时更改状态,都会调用新的呈现,并随后执行componentDidUpdate

但是条件

if (prevProps.something !== something) this.apiCall();
可能不再满足,此时只需控制台日志记录,而不是调用apiCall函数,该函数将触发INIFIENT循环


希望有帮助。

请包含一个,否则将很难帮助您。组件调用componentDidUpdate的原因是其状态或道具已更新。这是由于在您的组件中调用setState或父组件将其道具更改为您的组件…或父组件被重新呈现,而此具体子组件不是PureComponent,因此它被重新呈现,请包含,组件调用componentDidUpdate的原因是其状态或道具已更新。这是由于在组件中调用setState或父组件将其道具更改为组件…或者父组件被重新渲染,而此具体子组件不是PureComponent,因此它也被重新渲染