React native 如何捕获实时重新加载导致的组件卸载
[编辑-我以为我使用的是热重新加载,但实际上我使用的是实时重新加载] 我有一个本机插件,需要做一些清理,每次完成与。基本上我想防止这些错误:React native 如何捕获实时重新加载导致的组件卸载,react-native,React Native,[编辑-我以为我使用的是热重新加载,但实际上我使用的是实时重新加载] 我有一个本机插件,需要做一些清理,每次完成与。基本上我想防止这些错误: Calling JS function after bridge has been destroyed: RCTDeviceEventEmitter.emit(..) 不会调用componentWillUnmount()。实时重新加载将重新启动应用程序,并在文件更改时将应用程序加载回初始路由。不会调用ComponentWillUnmount 当您重新加载
Calling JS function after bridge has been destroyed: RCTDeviceEventEmitter.emit(..)
不会调用componentWillUnmount()。实时重新加载将重新启动应用程序,并在文件更改时将应用程序加载回初始路由。不会调用ComponentWillUnmount 当您重新加载时,幕后发生的是react上下文被破坏,并且正在创建一个新的上下文
每当本机模块试图使用旧的react上下文执行工作时,就会抛出该错误get。您可以使用如下内容: 只需将容易出错的代码包装在ErrorBoundary组件中,例如
<ErrorBoundary><childComponentCausingError></ErrorBoundary>
在ErrorBoundary组件中,您可以在componentDidCatch=(error,info)=>{
}
componentDidCatch()是React中的生命周期方法。从技术上讲,您已经回答了这个问题。真正的问题是如何捕获实时重新加载,以便让本机插件进行清理。目前,在使用.emit()之前,我正在检查CatalystInstance.isDestroyed(),但这不是一个理想的解决方案。您可能可以监听活动的生命周期事件。您需要在模块的构造函数中注册一个侦听器,然后实现
onHostDestroy
请查看以下文档:这些是标准的应用程序生命周期事件。它们与实时重新加载无关。相信我,我已经试过了。这似乎不能回答问题。我希望在实时重新加载时主动清理资源,而不是捕获错误,因为资源未清理。