Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript 是否在应用程序关闭时删除侦听器?_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 是否在应用程序关闭时删除侦听器?

Javascript 是否在应用程序关闭时删除侦听器?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,假设我在componentDidMount中注册了以下侦听器: NetInfo.isConnected.addEventListener('connectionChange', this.props.connectionChange) 我需要该侦听器在应用程序运行时始终处于活动状态 在这种情况下,是否需要调用removeEventListener,或者在应用程序关闭后将其删除?当组件将卸载时,或者当状态为不活动时,可以删除侦听器 componentDidMount() { AppS

假设我在
componentDidMount
中注册了以下侦听器:

    NetInfo.isConnected.addEventListener('connectionChange', this.props.connectionChange)
我需要该侦听器在应用程序运行时始终处于活动状态


在这种情况下,是否需要调用
removeEventListener
,或者在应用程序关闭后将其删除?

组件将卸载时,或者当状态为
不活动时,可以删除侦听器

componentDidMount() {
  AppState.addEventListener('change', this.handleAppStateChange);
}

componentWillUnmount() {
   //remove listener here
  AppState.removeEventListener('change', this.handleAppStateChange);
}

handleAppStateChange = (nextAppState) => {
  if (nextAppState === 'inactive') {
     //remove listener here
  }    
}

希望这能解决您的问题

我正在使用wix导航,不幸的是没有根组件。这意味着我需要在多个组件中复制此逻辑,因此我的问题是。如果没有必要删除事件侦听器,因为它将在应用程序关闭时被删除,那么我不需要实现此逻辑。通常,您所要做的就是在componentWillUnmount函数中删除侦听器,这将处理问题,但不会,在componentWillUnmount内部没有根组件来处理此问题-我需要复制逻辑,您将事件附加到哪里?在wix navigation中,你可以一次删除一个根目录,而我需要在应用程序启动后启动侦听器。考虑以下流程:条目(根开始侦听器,init app)->登录(新根)-d盘(新根)。在这种情况下,当根被更改时,将调用组件-ununStand,从条目中删除监听器。我需要在登录和仪表板中启动/删除相同的侦听器。我希望这是有道理的