当前位置: 首页 > 面试题库 >

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

危彬彬
2023-03-14
问题内容

我正在使用react native导航(react-
navigation)StackNavigator。它从应用程序整个生命周期的“登录”页面开始。我不想使用返回选项,返回“登录”屏幕。有谁知道登录屏幕后如何将其隐藏在屏幕上?顺便说一句,我也使用以下命令将其隐藏在登录屏幕中:

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

问题答案:

1)要使后退按钮在react-navigation v2或更高版本中消失:

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

2)如果您要清理导航堆栈:

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

如果您使用的是反应导航版本v5或更高版本 ,则可以使用navigation.resetCommonActions.reset

 // Replace current navigation state with a new one,
 // index value will be the current html" target="_blank">active route:

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

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

要么:

navigation.dispatch(
  CommonActions.reset({
    index: 1,
    routes: [
      { name: 'Home' },
      {
        name: 'Profile',
        params: { user: 'jane' },
      },
    ],
  })
);
来源和更多信息在这里: https
//reactnavigation.org/docs/navigation-
actions/#reset

对于旧版本的反应导航:

v2-v4 使用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 使用NavigationActions.reset

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

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

或者如果您想使用钩子:

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

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



 类似资料:
  • 问题内容: 我正在尝试在Cordova应用程序上禁用后退按钮。我正在使用AngularJS + Ionic Framework。我找到了有关此主题,并尝试了下面的代码,但它绝对没有效果。任何想法? index.html 请注意,当我按下后退按钮时,控制台中会显示“ hello”。 问题答案: 终于找到了这个 Ionic论坛主题的答案: 允许完全覆盖后退按钮行为。第一个参数是回调函数,第二个参数是优

  • 我开始创建一个应用程序,它使用一个活动(导航抽屉)和许多片段。但我无法使用工具栏上的“后退”按钮从片段中导航回来。硬件后退按钮工作正常。我知道我需要覆盖选项ItemSelected,捕捉android。R、 id.home,检查后堆栈中是否有内容,然后弹出它。在更改片段后,“burger”按钮变为“back arrow”,但当我单击它时,选项ItemSelected将打开NavigationDra

  • 我开发了一个简单的用户管理系统。在用户登录时,我设置了数据库会话。我也会在注销时销毁它们。我的缓存也被关闭。即使当我点击浏览器上的后退按钮时,我可以看到我的仪表板,当我点击任何链接时,它应该将我重定向到登录,但它首先显示仪表板,这是一个bug。 登录中的控制器。php: 在match.php中查看页面: 当我点击后退按钮时,它会再次显示登录页面。

  • 问题内容: 现在我有两个视图控制器。我的问题是,更改为第二个视图控制器后,我不知道如何隐藏后退按钮。主要是我在Objective-C中找到的参考。如何快速编码? 在Objective-C中隐藏后退按钮代码 问题答案: 根据该文件为:

  • 问题内容: 我正在尝试在控制器的导航栏中设置后退按钮图像,这是viewDidLoad()中的代码: 我试图将它们放到viewWillLoad中,但是得到了同样的错误 控制台出现错误消息: 我不知道哪一部分出了问题。似乎back_img不是nil,但我收到错误消息说它为nil 谢谢! 问题答案: 我已经研究了示例代码。1)在情节提要中创建一个条形按钮项。2)使用IBOutlet将按钮链接到控制器3)

  • 我想知道如何使用导航控制器正确处理系统后退按钮动作。在我的应用程序中,我有两个片段(例如,fragment1和fragment2),我在fragment1中有一个操作,目标是fragment2。除了一件事之外,所有的工作都很好--当用户按下fragment2中的system back按钮时,我希望显示一个对话框(例如使用DialogFragment)来确认退出。实施这种行为的最佳方式是什么?如果我