如何在堆栈导航器中进行从子级到另一个子级 v5 的嵌套导航?

How to do nested navigation in stack navigator from child to another child v5?

我想做一些从子屏幕到另一个子屏幕的嵌套导航时卡住了。下面是我需要的堆栈导航。

  Home Screen
     -> Add User
     -> View Users 
          -> No Users(Shown only incase no users found)
          -> Users List(Shown when users Data found)
              ->View Details

下面是我尝试使用 ViewUsers 的嵌套导航复制上述堆栈导航器的代码。但是我对此感到困惑 https://reactnavigation.org/docs/nesting-navigators/

 const HomeStack = createStackNavigator();
 function UserDetailsRoot(){
 return (
    <HomeStack.Navigator>
        <HomeStack.Screen name="No Users" component={NoUsers} />
        <HomeStack.Screen name="Users List" component={UsersList} />
        <HomeStackScreen  name="User Details" component={UserDetails} />
    </HomeStack.Navigator>

   )
 }
 const HomeStackScreen = () => (
<HomeStack.Navigator>
    <HomeStack.Screen name="Home " component={HomeScreen} />
    <HomeStack.Screen name="Add User" component={AddUsers} />
    <HomeStack.Screen name="UserDetailsRoot" component={UserDetailsRoot} />
</HomeStack.Navigator>

);

export default () => (
<NavigationContainer>
    <HomeStackScreen />
</NavigationContainer>
);

感谢任何帮助。 谢谢

我认为您忽略了嵌套导航器的要点。在您的代码中,您将 Stack 嵌套在 Stack 中,我认为这是不正确的。我可能会做的是这样的

const MainStackScreen = () => (
<HomeStack.Navigator>
    <HomeStack.Screen name="Home " component={HomeScreen} />
    <HomeStack.Screen name="AddUser" component={AddUsers} />
    <HomeStack.Screen name="UsersList" component={UsersList} />
    <HomeStack.Screen name="UserDetails" component={UserDetails} />
</HomeStack.Navigator>
);

export default () => (
<NavigationContainer>
    <MainStackScreen />
</NavigationContainer>
);

您绝对不需要“无用户”状态的屏幕,我假设您在 UsersList 中呈现 SectionListFlatList,因此如果您的 API return 为空,您可以使用 ListEmptyComponent 来处理特定情况。

当您需要将一个导航器的功能与另一个导航器的功能组合时,嵌套导航器也很有用,例如将 StackNavigator 放置在 TabNavigator 的每个选项卡内是一种常见模式。另一种情况是,当您需要在 Stack 上将某些内容呈现为模态时,在这种情况下,您需要添加一个 StackNavigator 作为容器。

希望对您有所帮助:)