React native BackHandler.removeEventListener不工作

React native BackHandler.removeEventListener不工作,react-native,React Native,我使用BackHandler.exitApp()在我的第一个屏幕中,但当我导航到另一个屏幕并单击android后退按钮时,它仍然会退出应用程序 我在构造函数中使用了bind,因此我无法理解removeEventListener为什么不起作用 任何帮助都将不胜感激。提前谢谢 下面是我使用BackHandler编写的代码,如下所示: constructor(props) { super(props); this.backPressed = this.backPressed.bin

我使用
BackHandler.exitApp()在我的第一个屏幕中,但当我导航到另一个屏幕并单击android后退按钮时,它仍然会退出应用程序

我在构造函数中使用了
bind
,因此我无法理解
removeEventListener
为什么不起作用

任何帮助都将不胜感激。提前谢谢

下面是我使用
BackHandler
编写的代码,如下所示:

  constructor(props) {
    super(props);
    this.backPressed = this.backPressed.bind(this);
  }

  componentWillMount() {
    if (Platform.OS === 'android') {
      BackHandler.addEventListener('hardwareBackPress', this.backPressed);
    }
  }

  componentWillUnmount() {
    if (Platform.OS === 'android') {
      BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
    }
  }

  backPressed() {
    BackHandler.exitApp();
  }

我有同样的问题,并解决了它使用此代码。希望这对你有帮助

goBack=()=>{
    this.props.navigation.goBack();
    return true;
}
componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.goBack);
}
componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.goBack);
}

我将其添加到另一个不想退出的屏幕。

您使用的是哪种导航?您确定您的第一个屏幕卸载并删除了侦听器吗?你能在监听器前添加一个
控制台。日志
,看看当你改变屏幕时它是否会记录。我使用
反应导航
你说得对,我尝试使用
控制台。日志
当导航到另一个屏幕时
组件将卸载
不起作用。找其他人讨论这个问题。我仍然找不到如何修复它。如果你正在将一个新屏幕推到堆栈中,那么这就是预期的行为。除非你弹出屏幕,否则它不会卸载。我无法卸载它。因为它是我的主屏幕。。。有什么方法可以让我设置一些方法来了解它,从而导航到另一个屏幕?您可以使用来了解您是否在主页中,并在导航到另一个屏幕之前删除侦听器。