React native React导航v5赢得';t重置并删除以前的路由

React native React导航v5赢得';t重置并删除以前的路由,react-native,react-navigation-v5,React Native,React Navigation V5,我有一个登录屏幕,我已经在堆栈中放置。用户成功登录后,会重定向到主屏幕,即抽屉屏幕。抽屉屏幕的一个选项是注销,所以点击它的用户应该注销。以下是我的注销屏幕代码。我只是在ui中显示注销屏幕的进度条,但在useffecthook中,我调用了以下方法 navigation.navigate({index: 0, routes: [{name: LOGIN_SCREEN}]}); 但是我得到一个错误,说当调用navigate时,需要指定name或key,并将对象作为参数,我被重定向到主屏幕。当我完全重

我有一个登录屏幕,我已经在堆栈中放置。用户成功登录后,会重定向到主屏幕,即抽屉屏幕。抽屉屏幕的一个选项是注销,所以点击它的用户应该注销。以下是我的注销屏幕代码。我只是在ui中显示注销屏幕的进度条,但在
useffect
hook中,我调用了以下方法

navigation.navigate({index: 0, routes: [{name: LOGIN_SCREEN}]});
但是我得到一个错误,说
当调用navigate时,需要指定name或key,并将对象作为参数
,我被重定向到主屏幕。当我完全重新启动我的应用程序时,只有它移动到登录屏幕。我正在传递名称键的正确值

我的导航堆栈如下所示

 <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={{
         ...
        }}
      />

...
我的抽屉组件如下

 <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={{
         ...
        }}
      />

如果要重置,则需要使用
重置
,而不是
导航

navigation.reset({
路由:[{name:LOGIN\u SCREEN}]
});

在react navigation v5中。您可以像这样重置导航

import { CommonActions } from "@react-navigation/native";

this.props.navigation.dispatch(
     CommonActions.reset({
        index: 0,
        routes: [{ name: "LOGIN_SCREEN" }],
    })
);

谢谢你的回答,但我得到一个对话框说,不变量违反。用reset替换navigate后超出了最大深度这可能与此有关。如何使用reset从登录堆栈导航到抽屉?