React 树更新时收到通知

Posted

技术标签:

【中文标题】React 树更新时收到通知【英文标题】:Get notified when React tree is updated 【发布时间】:2019-12-07 14:20:13 【问题描述】:

ReactDOM.render 接受一个可选的回调,该回调在组件渲染时执行:

ReactDOM.render(element, container[, callback])

React/ReactDOM 中是否有类似的回调,当从内部更新树中的组件(任何深度)时执行,即使用 setState?


仅在根组件上提供 componentDidUpdate 是行不通的,因为子更新不会触发该方法:https://codesandbox.io/s/react-example-yjq0r 可以使用 MutationObserver 订阅 DOM 树更新,但我想知道 React 是否提供了开箱即用的功能。

【问题讨论】:

componentDidUpdate 怎么样? setState(updater[, callback]) setState 也接受callback 是的,componentDidUpdate/setState 回调,但针对整个树。 React: how to notify parent for changes的可能重复 【参考方案1】:

这可以使用React.Profiler:

<React.Profiler id="app" onRender=callback>
  <Root />
</React.Profiler>

https://codesandbox.io/s/react-example-lmvzk

【讨论】:

以上是关于React 树更新时收到通知的主要内容,如果未能解决你的问题,请参考以下文章

react native - 应用程序被杀死/未启动时未收到通知

如何在 React Native 中在没有用户交互的情况下收到通知时打开应用程序

React Native - 在接收本地推送通知时清除以前的推送通知

使用 react-native-push-notification,App 在收到新的 FCM 通知时崩溃

使用@react-native-firebase/messaging 收到通知后应用程序崩溃

但是,当收到通知时,通知收件箱样式会更新