Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 从一个导航器中的屏幕导航到另一个导航器中的屏幕_React Native_React Navigation_React Navigation V5 - Fatal编程技术网

React native 从一个导航器中的屏幕导航到另一个导航器中的屏幕

React native 从一个导航器中的屏幕导航到另一个导航器中的屏幕,react-native,react-navigation,react-navigation-v5,React Native,React Navigation,React Navigation V5,我使用的是react导航v5 在我的应用程序中。我有两个导航器,一个堆栈导航器一个抽屉导航器: const LoginStack = createStackNavigator(); const Drawer = createDrawerNavigator(); 我根据登录状态显示其中一个: {state.loggedIn? ( <LoginStack.Navigator ...> <LoginStack.Screen

我使用的是react导航v5

在我的应用程序中。我有两个导航器,一个堆栈导航器一个抽屉导航器:

const LoginStack = createStackNavigator();
const Drawer = createDrawerNavigator();
我根据登录状态显示其中一个:

{state.loggedIn? (
        <LoginStack.Navigator
          ...>
          <LoginStack.Screen
            name='login'
            component={LoginScreen}
          />
          <LoginStack.Screen
            name='register'
            component={RegisterScreen}
          />
        </LoginStack.Navigator>
      ) : (
        <>
          <Drawer.Navigator
            initialRouteName={Landing}
            drawerContent={props => <MyDrawerContent {...props} />}
           >
            <Drawer.Screen name="landing" component={LandingScreen} />
            ...
          </Drawer.Navigator>
        </>
      )}
{state.loggedIn(
) : (
}
>
...
)}
如上所述,如果用户未登录,我将显示
LoginStack
navigator,否则我将显示
Drawer
navigator。如果您仔细查看
Drawer.Navigator
部分,我已经声明了我自己的抽屉内容
MyDrawerContent

MyDrawerContent
中,我有一个注销按钮。我想将用户导航到
LoginStack
LoginScreen
。我试过:

props.navigation.navigate('login')}/>


但是我得到错误
任何导航器都没有处理带有有效负载{“name”:“Login”}的操作“导航”。
。是因为我正在导航到另一个导航器的屏幕,而该导航器不属于
MyDrawerContent
?如何解决此问题?

由于您创建了两个完全独立的导航树,因此无法在它们之间导航,因为当您在
抽屉中时,
登录
屏幕未注册,因此不可用


但是,您真正想做的是在按下注销按钮时,将
loggedIn
状态更改为false。这将重新呈现主应用程序组件,并呈现
LoginStack
。现在还不清楚如何在组件树中传递
状态
,因此我无法提供具体的代码示例,但希望您能理解。

我已经创建了一个全局上下文来承载登录状态。来自该上下文的提供者包装了整个应用程序。在这种情况下,从上下文获取状态并更新
loggedIn
属性。