React Native 任何导航器都未处理有效负载为{“MainTabs”}操作“navigate

y53ybaqx  于 2023-03-31  发布在  React
关注(0)|答案(1)|浏览(105)

我在开发react-native时遇到了以下错误。我读过一些与此错误相关的帖子,但导航结构与我的略有不同。我也知道这是在屏幕之间导航时发生的问题。但我读到的示例代码显然是具有不同导航父级的情况。但我编写的导航如下:

const RootStacks = () => {
  return (
    <Stack.Navigator>
      {isInitializing? (
         <Stack.Screen name='LoadingScreen' component={LoadingScreen} />
      ) : isLoggedIn ? (
        <Stack.Screen name='AuthScreen' component={AuthScreen} />
      ) : isFirstSignup ? (
          <Stack.Screen name='AgreementScreen' component={AgreementScreen} />
          <Stack.Screen ...
      ) : 
          <Stack.Screen name='MainTabs' component={MainTabs} />
          <Stack.Screen ...
      )}
    </Stack.Navigator>
}

const MainTabs = () => {
  return (
    <Tab.Navigator
      screenOptions={{ headerShown: false }}
      tabBar={(props) => <MainBottomTabBar {...props} />}
    >
      <Tab.Screen name='GroupScreen' component={GroupScreen} />
      <Tab.Screen name='MatchTabs' component={MatchTabs} />
      <Tab.Screen name='ChatScreen' component={ChatScreen} />
      <Tab.Screen name='MyScreen' component={MyScreen} />
    </Tab.Navigator>
  )
}

我想从“AgreementScreen”导航到“MainTabs”。但在AgreementScreen上运行'navigation.navigate ('MainTabs');时,出现与本文标题类似的错误。

  • 任何导航器都未处理带有有效负载{“MainTabs”}的操作“navigate”*

在调查过程中,我发现我必须指定一个名为screen的参数。然后代码应修改如下。
navigation.navigate("SomeParentStack", { screen: 'MainTabs' })
但是我认为AgreementScreen和MainTabs有相同的父导航器,而且我不知道该放什么值来代替SomeParentStack

q35jwt9p

q35jwt9p1#

您无法导航到MainTabs屏幕,因为它们未同时装载。请更新路由结构,以便AgreementScreenMainTabs同时可用,或者通过将isFirstSignUp的条件呈现值更新为false来导航到MainTabs
您可以在这里阅读更多关于导航结构的信息:https://reactnavigation.org/docs/auth-flow/

相关问题