我正在使用反应原生导航(react-navigation)StackNavigator . 它在应用程序的整个生命周期中从“登录”页面开始 . 我不想有后退选项,返回登录屏幕 . 有谁知道登录屏幕后它是如何隐藏在屏幕上的?顺便说一句,我也使用以下方法将其隐藏在登录屏幕中:
const MainStack = StackNavigator({
Login: {
screen: Login,
navigationOptions: {
title: "Login",
header: {
visible: false,
},
},
},
// ... other screens here
})
9 回答
For react-navigation version v1 >= 1.0.0-beta.9 ,使后退按钮消失:
如果你也想清理导航堆栈,你可以这样做(假设你在你想要导航的屏幕上):
并使用一个函数导航到目标路由,该路由将禁用所有后台功能:
然后在要导航到目标路由时调用
this.resetNavigation('myRouteWithDisabledBackFunctionality')
For react-navigation version v2 你需要使用
StackAction.reset(...)
而不是NavigationActions.reset
更多信息:https://reactnavigation.org/docs/en/stack-actions.html
您可以使用
left:null
隐藏后退按钮,但对于Android设备,当用户按下后退按钮时,它仍然可以返回 . 您需要重置导航状态并使用left:null
隐藏按钮以下是重置导航状态的文档:https://reactnavigation.org/docs/navigators/navigation-actions#Reset
此解决方案适用于
react-navigator 1.0.0-beta.7
,但left:null
不再适用于最新版本 .您是否考虑过使用
this.props.navigation.replace( "HomeScreen" )
而不是this.props.navigation.navigate( "HomeScreen" )
.这样您就不会向堆栈添加任何内容 . 因此,如果在Android中按下后退按钮或在IOS中向右滑动屏幕,HomeScreen将不会回复任何内容 .
更多信息检查Documentation . 当然,您可以通过在
navigationOptions
中设置headerLeft: null
来隐藏后退按钮react-navigation versions >= 1.0.0-beta.9
发现它自己;)添加:
禁用默认后退按钮 .
我们需要将
gesturesEnabled
设置为false,并将headerLeft
设置为null
. 因为我们也可以通过滑动屏幕来导航回来 .我们可以通过将headerLeft设置为null来修复它
在最新版本(v2)中工作
headerLeft:null
. 您可以添加控制器的navigationOptions
如下所示对于最新版本的React Navigation,即使您在某些情况下使用null,它仍然可能会显示“后退”!
在您的屏幕名称下的 main app.js 中进行此操作,或者只需转到 class file 并添加: -