我正在开发一个需要用户登录才能访问该应用程序功能的应用程序。用户登录并重定向到用户堆栈后,我不希望他们能够以任何方式返回登录屏幕。
我成功使用登录后:
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);
有什么方法可以防止用户返回来宾堆栈?谢谢
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中。