【问题标题】:Navigation between screens in 2 different Stacks在 2 个不同堆栈中的屏幕之间导航
【发布时间】:2021-12-05 22:34:21
【问题描述】:

我有 2 个堆栈,RootNavigator 和 AuthNavigator。在<NavigationContainer> 内。

<NavigationContainer>
  {token ? <RootNavigator /> : <AuthNavigator />}
</NavigationContainer>

RootNavigator.js 返回:

return (
  <Stack.Navigator>
    <Stack.Screen name="Members">
  </Stack.Navigator>
)

AuthNavigator 返回:

return (
  <Stack.Navigator screenOptions={{ headerShown: false }}>
    <Stack.Screen name="Login" component={Login} />
  </Stack.Navigator>
);

我的问题是如何从登录屏幕转到会员屏幕?

我试过这个: navigation.navigate('Members');navigation.navigate('RootNavigator', {screens: 'Members'});

版本:

"@react-navigation/drawer": "^6.1.8",
"@react-navigation/native": "^6.0.6",
"@react-navigation/stack": "^6.0.11",

【问题讨论】:

  • 你能添加你的 react-navigation 版本吗?
  • @ridvanaltun 完成
  • 如果将 2 个堆栈 A 和 B 嵌套在堆栈 C 中。那么它是可能的。否则,您必须将&lt;Stack.Screen name="Members"&gt; 添加到AuthNavigator

标签: typescript react-native react-navigation react-navigation-stack


【解决方案1】:

您需要使用 redux 或任何其他类型的状态管理来更改令牌值。例如,一旦您将令牌更改为 TRUE,导航容器就会有 rootNavigator 而不是 authNavigator,并且屏幕会发生变化。

【讨论】:

  • 但是如何使用 redux 进行更改?我搜索了它,但我找不到它。你能给我解释一下或举个例子吗?
  • 当你登录时,你应该改变redux store中的“token”值。因此,例如,您在 redux 中有一个名为 onSigin 的操作。此操作将您的令牌状态更改为 TRUE。因此,当用户登录时,您调用此操作并且“令牌”变为真。然后在导航中,会用到
猜你喜欢
  • 2020-07-27
  • 1970-01-01
  • 2021-09-10
  • 2020-11-09
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多