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

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

const MainStack = StackNavigator({
  Login: {
    screen: Login,
    navigationOptions: {
      title: "Login",
      header: {
        visible: false,
      },
    },
  },
  // ... other screens here
})
西门阳光2020/03/16 12:29:32

在最新版本(v2)中工作headerLeft:null您可以添加控制器的navigationOptions波纹管

static navigationOptions = {
    headerLeft: null,
};
神乐Jim2020/03/16 12:29:32

简单地做

headerLeft: null

您阅读此答案的时间可能已过时。您应该使用以下

   navigationOptions = {
        headerTitle : "Title",
        headerLeft : () => {},
    }
伽罗Jim小哥2020/03/16 12:29:31

我认为这很简单,只需添加headerLeft : null,我正在使用react-native cli,所以这是示例:

static navigationOptions = {
    headerLeft : null
};
乐达蒙小卤蛋2020/03/16 12:29:31

react-navigation版本> = 1.0.0-beta.9

navigationOptions:  {
   headerLeft: null
}
Near西里2020/03/16 12:29:31

我自己找到的;)添加:

  left: null,

禁用默认的后退按钮。

const MainStack = StackNavigator({
  Login: {
    screen: Login,
    navigationOptions: {
      title: "Login",
      header: {
        visible: false,
      },
    },
  },
  FirstPage: {
    screen: FirstPage,
    navigationOptions: {
      title: "FirstPage",
      header: {
        left: null,
      }
    },
  },
樱Gil2020/03/16 12:29:31

您可以使用来隐藏“后退”按钮left:null,但是对于android设备,当用户按下“后退”按钮时,它仍然可以返回。您需要重置导航状态并使用隐藏按钮left:null

以下是用于重置导航状态的文档:https : //reactnavigation.org/docs/navigators/navigation-actions#Reset

该解决方案适用于react-navigator 1.0.0-beta.7,但left:null不再适用于最新版本。

神奇Tony古一2020/03/16 12:29:31

您是否考虑过使用this.props.navigation.replace( "HomeScreen" )而不是this.props.navigation.navigate( "HomeScreen" )

这样,您就不会在堆栈中添加任何内容。因此,如果在Android中按下“后退”按钮或在IOS中向右滑动屏幕,则HomeScreen不会挥动任何内容。

有关更多信息,请参见文档当然,你可以通过设置隐藏后退按钮headerLeft: nullnavigationOptions