本机StackNavigator禁用后退

问题描述 投票:0回答:1

我正在开发一个需要用户登录才能访问该应用程序功能的应用程序。用户登录并重定向到用户堆栈后,我不希望他们能够以任何方式返回登录屏幕。

我成功使用登录后:

 this.props.navigation.navigate('User')

我遵循了react-navigation网站上文档中的身份验证流程,但是一旦我按回该用户,便可以返回登录屏幕。

我将屏幕分为用户和访客两个不同的堆栈,并且我还具有文档中显示的加载屏幕:https://reactnavigation.org/docs/4.x/auth-flow(我使用的是4.3.3版)

const Navigator = createStackNavigator(
{
    AuthLoading: AuthLoadingScreen,
    Guest: guest,
    User: user
  },
  {
    initialRouteName: 'AuthLoading',
  }
);
export default createAppContainer(Navigator);

有什么方法可以防止用户返回来宾堆栈?谢谢

react-native react-native-navigation
1个回答
0
投票

StackNavigator显然像一个堆栈一样工作。因此,如果要阻止用户进行导航,则必须清除堆栈。如果您使用的是简单路线,则可以使用replace

this.props.navigation.replace('User')

这将用路由用户替换您当前的路由(AuthLoading)。较早的路由将保留在堆栈中。

如果您的用户和来宾本身又是嵌套导航器,则应使用reset

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

这将擦除整个堆栈并将其替换为新的堆栈,您可以将其直接建立在actions-array中。

© www.soinside.com 2019 - 2024. All rights reserved.