React 16:componentDidUpdate 警告:安排了级联更新

Posted

技术标签:

【中文标题】React 16:componentDidUpdate 警告:安排了级联更新【英文标题】:React 16 : componentDidUpdate Warning: Scheduled a cascading update 【发布时间】:2018-05-15 22:05:24 【问题描述】:

我通过关注 this article by Ben Schwarz 使用 react redux 分析了我的应用程序的性能。

在用户计时部分,我收到以下警告(带有禁止进入标志):

有两条消息:

(Committing Changes) Warning: Lifecycle hook scheduled a cascading update Connect(MyComponent).componentDidUpdate Warning: Scheduled a cascading update

我进行了一些搜索,但没有发现任何特别之处。好像和react-redux的connect HOC的componentDidUpdate函数有关。

这些消息是什么意思?

【问题讨论】:

【参考方案1】:

这些消息意味着 componentDidUpdate 正在获取更改的 props 或设置状态,因此更新将级联(发生在最后一次更新之后),因为它是更新期间调用的最后一个生命周期方法。基本上 React 已经确定需要进行另一个更新,并且它甚至还没有完成当前的更新。我不确定这是 react-redux 还是您的应用程序的问题。

【讨论】:

...此时会发生什么?它会继续之前的更新,还是从新的更新开始,或者将两者合并?这个案子真的有问题吗?? 下一次更新发生在当前更新之后,我实际上不确定 Fiber 是如何处理这个问题的,所以在下一次更新之前可能会发生其他事情,但更新将是下一个渲染周期的一部分. 但这确实意味着触发的更新在当前渲染周期内不会处于活动状态,因此您可能会尝试引用错误数据并且不会同步。

以上是关于React 16:componentDidUpdate 警告:安排了级联更新的主要内容,如果未能解决你的问题,请参考以下文章

[react] React16废弃了哪些生命周期?为什么?

React 16 - 不正确的对等依赖

为 create-react-app 添加 React 测试库时出错(版本 16.12.0)

React躬行记(16)——React源码分析

如何在 React 16 中进行性能分析

React@16.8.6源码阅读Scheduler