如何在 React 16 中找到导致更新的触发器?

Posted

技术标签:

【中文标题】如何在 React 16 中找到导致更新的触发器?【英文标题】:How to find the trigger that caused the update in React 16? 【发布时间】:2020-03-15 14:36:30 【问题描述】:

我最近升级到了光纤。 15、当一个组件更新时,更新堆栈跟踪是这样的

component1Update
...react framework stuff
  component2Update
  ...react framework stuff
    component3Update
    setState
    onClick() <-- Aha!

如何在 Fiber (React 16) 中找到更新的来源?

【问题讨论】:

首先如何获得堆栈跟踪? @hackape 啊忘了提,来自渲染方法中的调试器语句。 你应该明白为什么github.com/welldone-software/why-did-you-render 了? 可能是***.com/questions/41004631/…的副本 【参考方案1】:

我建议在 react-profiler 中查找不断更新的节点,然后用 https://github.com/welldone-software/why-did-you-render 装饰该组件,这应该会告诉你它为什么更新。

【讨论】:

以上是关于如何在 React 16 中找到导致更新的触发器?的主要内容,如果未能解决你的问题,请参考以下文章

React生命周期, setState、props改变触发的钩子函数

如何在 React 中触发 useCallback

如何在 React Router v5 中更新 URL 并替换历史状态而不重新渲染整个应用程序?

react-router:如何在不导致导航/重新加载的情况下更新 url?

React16废弃的生命周期和新的生命周期

React16废弃的生命周期和新的生命周期