React-native StackNavigator 禁止返回
React-native StackNavigator disable going back
我正在开发一个应用程序,它需要用户登录才能访问该应用程序的功能。一旦用户登录并被重定向到用户堆栈,我不希望他们能够以任何方式返回登录屏幕。
登录成功我使用了:
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) 替换为路由用户。较早的路线将保留在堆栈中。
如果您的 User 和 Guest 本身又是嵌套导航器,我建议使用 reset。
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'User' })],
});
this.props.navigation.dispatch(resetAction);
这将擦除整个堆栈并用您的新堆栈替换它,您可以直接在动作数组中构建它。
我正在开发一个应用程序,它需要用户登录才能访问该应用程序的功能。一旦用户登录并被重定向到用户堆栈,我不希望他们能够以任何方式返回登录屏幕。
登录成功我使用了:
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) 替换为路由用户。较早的路线将保留在堆栈中。
如果您的 User 和 Guest 本身又是嵌套导航器,我建议使用 reset。
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'User' })],
});
this.props.navigation.dispatch(resetAction);
这将擦除整个堆栈并用您的新堆栈替换它,您可以直接在动作数组中构建它。