Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何捕获实时重新加载导致的组件卸载_React Native - Fatal编程技术网

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
请查看以下文档:这些是标准的应用程序生命周期事件。它们与实时重新加载无关。相信我,我已经试过了。这似乎不能回答问题。我希望在实时重新加载时主动清理资源,而不是捕获错误,因为资源未清理。