反应导航-不要通过按“后退”按钮返回登录屏幕

时间:2018-12-19 14:55:16

标签: react-native react-navigation

当您单击“后退”按钮时,应用程序将返回登录屏幕。我需要它来简单地关闭应用程序。用户打开登录屏幕进行登录。登录后,他将无法再返回登录屏幕。当您单击后退按钮时,它必须退出应用程序。

我已经在网上搜索了一个解决方案,但没有找到。我找到了一种清除堆栈的方法,但是仅当路由在StackNavigator内部时,该方法才有效。就我而言,该路线位于DrawerNavigator内部。

我的配置

const Drawer = DrawerNavigator(
  {
    Login: { screen: Login, navigationOptions:({navigation})=>({ drawerLockMode:"locked-closed" })},
    ListCliente: { screen: ListCliente },  
    Sincronizacao: { screen: Sincronizacao },

  },
  {
    initialRouteName: "Login",
    contentOptions: {
      activeTintColor: "#e91e63"
    },
    contentComponent: props => <SideBar {...props} />
  }
);

const AppNavigator = StackNavigator(
  {
    Drawer: { screen: Drawer }, 
    FormCliente: { screen: FormCliente },
    ListAtendimento: { screen: ListAtendimento },
    FormAtendimento: { screen: FormAtendimento },
  },
  {
    initialRouteName: "Drawer",
    headerMode: "none"
  }
);

可能的解决方案。但是,仅当路由在StackNavigator内部时才有效。而且CustomerClient路由位于DrawerNavigator内部。

import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: 'listCliente' })],
});
this.props.navigation.dispatch(resetAction);

总结。单击返回按钮时,我需要退出登录屏幕并转到“客户列表”屏幕,而不是返回登录屏幕。有人知道他们是否具有此功能吗?

1 个答案:

答案 0 :(得分:0)

const resetAction = NavigationActions.reset({
    index: 0,
    actions: [
      NavigationActions.navigate({
        routeName: "MainScreen"
      })
    ]
  });
  this.props.navigation.dispatch(resetAction);
  

尝试此代码段。会的。