gpt4 book ai didi

reactjs - React Native - 如何在每个屏幕中保留 TabNavigator

转载 作者:行者123 更新时间:2023-12-03 14:17:49 42 4
gpt4 key购买 nike

我在我的 React Native 应用程序中使用选项卡导航器、堆栈导航器和开关导航器的组合 react-navigation

这很有效,但我想在每个屏幕中保留底部选项卡。目前,如果我导航到 UserProfile屏幕上,然后底部选项卡消失。

应用程序.js:

const TabStack = createBottomTabNavigator({
Feed: { screen: FeedScreenStack },
MyProfile: { screen: ProfileScreenStack },
});

const UserStack = createStackNavigator(
{
UserProfile: { screen: userProfile },
Comments: { screen: comments }
}
);

const MainStack = createSwitchNavigator(
{
Home: TabStack,
User: UserStack,
Auth: AuthStack
},
{
initialRouteName: 'Home'
}
);

为了解决这个问题,我尝试从选项卡导航器中创建一个组件,然后将其导入 userProfile.js ,例如<BottomTab /> .

bottomTab.js:

const BottomTab = createBottomTabNavigator({
Feed: { screen: FeedScreenStack },
MyProfile: { screen: ProfileScreenStack },
})

export default BottomTab

但这不起作用,因为在react-navigation 3中我必须直接设置应用程序容器,并且我不知道如何绕过它。我能想到的唯一其他解决方案是创建一个自定义组件,它只是一个带有指向不同页面的按钮的栏,但我想知道我是否可以只使用 TabNavigator?

最佳答案

推荐的方法是 TabNavigation 是导航堆栈中的顶部项目。在每个选项卡中,您可能有不同的 StackNavigation。如果您将 SwitchNavigation 用于 Auth(可能意味着登录屏幕),您可以将 SwitchNavigation 与两个子 Auth 和 Tab 放在顶部,并在作为 TabNavigation 子项的不同 StackNavigation 中包含 Home、User、Feed 等。您可以更改例如如下:

const TabStack = createBottomTabNavigator({
Feed: { screen: FeedScreenStack },
User: { screen: UserStack },
});

const UserStack = createStackNavigator({
UserProfile: { screen: userProfile },
Comments: { screen: comments },
MyProfile: { screen: ProfileScreenStack },
});

const MainStack = createSwitchNavigator({
Home: TabStack,
Auth: AuthStack
},
{
initialRouteName: 'Home'
});

关于reactjs - React Native - 如何在每个屏幕中保留 TabNavigator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55271569/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com