禁用反应导航中的后退按钮

2024-01-13

我正在使用反应本机导航(反应导航)StackNavigator。 它从登录页面开始贯穿应用程序的整个生命周期。我不想有返回选项,返回到登录屏幕。有谁知道如何在登录屏幕后将其隐藏在屏幕上? 顺便说一句,我还使用以下方法将其隐藏在登录屏幕中:

const MainStack = StackNavigator({
  Login: {
    screen: Login,
    navigationOptions: {
      title: "Login",
      header: {
        visible: false,
      },
    },
  },
  // ... other screens here
})

1)使后退按钮在反应导航中消失

v5 或更新版本:

{     
    navigationOptions:  {
    title: 'MyScreen',
    headerLeft: ()=> null,
    // `headerLeft: undefined` should work too
    // `headerLeft: null` should work but could trigger a TS error
}

NOTE: v6有一个额外的选项:headerBackVisible: false

是否有后退按钮 在标题中可见。您可以使用它来显示后退按钮 headerLeft(如果您已指定)。

https://reactnavigation.org/docs/native-stack-navigator/#headerbackvisible https://reactnavigation.org/docs/native-stack-navigator/#headerbackvisible

v2-v4:

navigationOptions:  {
    title: 'MyScreen',
    headerLeft: null
}

2)如果你想清理导航堆栈:

假设您位于要从中导航的屏幕上:

如果您使用的是react-navigation版本v5或更高版本您可以使用navigation.reset or CommonActions.reset:

 // Replace current navigation state with a new one,
 // index value will be the current active route:

navigation.reset({
  index: 0,
  routes: [{ name: 'Profile' }],
});

来源和更多信息在这里:https://reactnavigation.org/docs/navigation-prop/#reset https://reactnavigation.org/docs/navigation-prop/#reset

Or:

navigation.dispatch(
  CommonActions.reset({
    index: 1,
    routes: [
      { name: 'Home' },
      {
        name: 'Profile',
        params: { user: 'jane' },
      },
    ],
  })
);

来源和更多信息在这里:https://reactnavigation.org/docs/navigation-actions/#reset https://reactnavigation.org/docs/navigation-actions/#reset

对于旧版本的反应导航:

v2-v4 use StackActions.reset(...)

import { StackActions, NavigationActions } from 'react-navigation';

const resetAction = StackActions.reset({
  index: 0, // <-- currect active route from actions array
  actions: [
    NavigationActions.navigate({ routeName: 'myRouteWithDisabledBackFunctionality' }),
  ],
});

this.props.navigation.dispatch(resetAction);

v1 use NavigationActions.reset

3) 对于 android,您还必须使用 BackHandler 禁用硬件后退按钮:

http://reactnative.dev/docs/backhandler.html http://reactnative.dev/docs/backhandler.html

或者如果你想使用钩子:

https://github.com/react-native-community/hooks#usebackhandler https://github.com/react-native-community/hooks#usebackhandler

否则,如果导航堆栈为空,应用程序将在按下 Android 硬件后退按钮时关闭。

其他来源:感谢在下面添加评论并帮助更新 v5+ 答案的用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用反应导航中的后退按钮 的相关文章

随机推荐