React Navigation v5 不会重置和删除以前的路线
React Navigation v5 won't reset and remove previous routes
我有一个放在堆栈中的登录屏幕。用户成功登录后,他将被重定向到主屏幕,这是一个抽屉屏幕。抽屉屏幕的选项之一是注销,因此单击它时用户应该注销。以下是我的注销屏幕代码。我只是在 ui 中显示注销屏幕的进度条,但在 useEffect
挂钩中,我调用了以下方法
navigation.navigate({index: 0, routes: [{name: LOGIN_SCREEN}]});
但我收到一条错误消息 You need to specify name or key when calling navigate with an object as the argument
,我被重定向到主屏幕。当我完全重新启动我的应用程序时,它只会移动到登录屏幕。我正在传递名称键的正确值。
我的导航堆栈如下所示
<Stack.Navigator>
<Stack.Screen
name={LOGIN_SCREEN}
component={LoginScreen}
options={{headerShown: false}}
/>
<Stack.Screen
name={HOME_STACK_SCREEN}
component={DrawerStack}
options={{headerShown: false}}
/>...
我的抽屉组件如下
<Drawer.Navigator
drawerStyle={{backgroundColor: BLUE_COLOR_1}}
drawerContentOptions={{labelStyle: {color: '#FFF'}}}>
<Drawer.Screen
name={HOME_SCREEN}
component={Home}
options={{
...
}}
/>
<Drawer.Screen
name={LOGOUT_SCREEN}
component={Logout}
options={{
...
}}
/>
如果你想重置那么你需要使用reset
,而不是navigate
:
navigation.reset({
routes: [{ name: LOGIN_SCREEN }]
});
在 react-navigation v5 中。您可以像这样重置导航
import { CommonActions } from "@react-navigation/native";
this.props.navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [{ name: "LOGIN_SCREEN" }],
})
);
我有一个放在堆栈中的登录屏幕。用户成功登录后,他将被重定向到主屏幕,这是一个抽屉屏幕。抽屉屏幕的选项之一是注销,因此单击它时用户应该注销。以下是我的注销屏幕代码。我只是在 ui 中显示注销屏幕的进度条,但在 useEffect
挂钩中,我调用了以下方法
navigation.navigate({index: 0, routes: [{name: LOGIN_SCREEN}]});
但我收到一条错误消息 You need to specify name or key when calling navigate with an object as the argument
,我被重定向到主屏幕。当我完全重新启动我的应用程序时,它只会移动到登录屏幕。我正在传递名称键的正确值。
我的导航堆栈如下所示
<Stack.Navigator>
<Stack.Screen
name={LOGIN_SCREEN}
component={LoginScreen}
options={{headerShown: false}}
/>
<Stack.Screen
name={HOME_STACK_SCREEN}
component={DrawerStack}
options={{headerShown: false}}
/>...
我的抽屉组件如下
<Drawer.Navigator
drawerStyle={{backgroundColor: BLUE_COLOR_1}}
drawerContentOptions={{labelStyle: {color: '#FFF'}}}>
<Drawer.Screen
name={HOME_SCREEN}
component={Home}
options={{
...
}}
/>
<Drawer.Screen
name={LOGOUT_SCREEN}
component={Logout}
options={{
...
}}
/>
如果你想重置那么你需要使用reset
,而不是navigate
:
navigation.reset({
routes: [{ name: LOGIN_SCREEN }]
});
在 react-navigation v5 中。您可以像这样重置导航
import { CommonActions } from "@react-navigation/native";
this.props.navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [{ name: "LOGIN_SCREEN" }],
})
);