android - React Native 中的 BackHandler 不工作

标签 android reactjs react-native react-navigation react-navigation-stack

const RootNav = createStackNavigator(
  {
    Splash: {
        screen:Splash
    },
    BeforeLogin: {
        screen:BeforeLogin
    },    
    Signin: {
        screen:Signin,
    },
    Signup: {
        screen:Signup
    },
    Tabs: {
        screen:TabHolder,
    },
    ForgotPassword: {
        screen:ForgotPassword
    },
  } );

下面是我在 BeforeLogin 屏幕中使用的 BackHandler

  componentWillMount() { 
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButton); 
  } 

  componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); 
  }

  handleBackButton = () => { 
    BackHandler.exitApp(); 
  }

下面是我在 Signin 屏幕和 Signup 屏幕中使用的 BackHandler

  componentDidMount() {
    BackHandler.addEventListener('hardwareBackPress',() => {   

      this.props.navigation.navigate('BeforeLogin');
      return true;

    });
  } 

我的 BeforeLogin 屏幕有 2 个按钮。登录和注册,它将我导航到 SigninSignup 屏幕。

现在,我面临两种情况。

场景 1: 我在 BeforeLogin 屏幕上,但我没有导航到 SigninSignup屏幕。现在,当我按下我的 android 后退按钮时,它会关闭应用程序。这就是我想要的,当用户从 BeforeLogin 屏幕按下后退按钮时能够关闭应用程序。

场景 2: 我在 BeforeLogin 屏幕上导航到 SigninSignup 屏幕。现在,当我返回 BeforeLogin 屏幕然后按 android 后退按钮时,应用程序现在没有关闭。

如何解决我的场景 2:?请帮忙。

最佳答案

不要在不必要的情况下使用 backhander,因为它不能在 ios 设备上运行。

使用 this.props.navigation.replace("") 导航

即如果您从 A 导航到 B 并且不想在按下后退按钮时返回到 A,请不要使用 this.props.navigation.navigate("B") 而是使用 this.props.navigation.replace("B")

试试 react-navigation@3.0 的新特性 SwitchNavigator

默认情况下,当按下后退按钮时,应用程序将关闭切换导航器中使用的所有路线屏幕。 因此,在 SwitchNavigator 中定义您要为其退出应用程序的所有屏幕,以及在 StackNavigator 或您使用的任何其他内容中定义所有其他屏幕。

关于android - React Native 中的 BackHandler 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54529894/

相关文章:

java - 有没有与 Android 的 Xcode clang 静态分析器相当或相似的东西?

javascript - 如何连接数组索引以根据索引更改组件的样式?

javascript - 如何使用 react-native onPress 更改变量

css - 为什么我的样式没有在 React Native 中更新?

javascript - 如何从 react 组件进行远程服务器调用?

react-native - 如何实现,React Native Drag-n-Drop

java - 构造 ObjectInputStream 时出现 EOFException

Android 更新后损坏的快捷方式

android - 如何获取 NavHostFragment

javascript - React - 像书页一样的 CSS Transition