跳到主要内容
版本: 7.x

在特定屏幕中隐藏标签栏

有时我们可能希望在嵌套在标签导航器中的堆栈导航器的特定屏幕中隐藏标签栏。假设我们有 5 个屏幕:HomeFeedNotificationsProfileSettings,并且您的导航结构如下所示

const HomeStack = createNativeStackNavigator({
screens: {
Home: Home,
Profile: Profile,
Settings: Settings,
},
});

const MyTabs = createBottomTabNavigator({
screens: {
Home: HomeStack,
Feed: Feed,
Notifications: Notifications,
},
});

const Navigation = createStaticNavigation(MyTabs);

export default function App() {
return <Navigation />;
}

使用此结构,当我们导航到 ProfileSettings 屏幕时,标签栏仍然会在这些屏幕上保持可见。

但是,如果我们只想在 HomeFeedNotifications 屏幕上显示标签栏,而不在 ProfileSettings 屏幕上显示标签栏,则需要更改导航结构。实现此目的的最简单方法是将标签导航器嵌套在堆栈的第一个屏幕内,而不是将堆栈嵌套在标签导航器内

const HomeTabs = createBottomTabNavigator({
screens: {
Home: Home,
Feed: EmptyScreen,
Notifications: EmptyScreen,
},
});

const RootStack = createNativeStackNavigator({
screens: {
Home: HomeTabs,
Profile: EmptyScreen,
Settings: EmptyScreen,
},
});

Snack 上尝试

在重新组织导航结构后,现在如果我们导航到 ProfileSettings 屏幕,标签栏将不再在屏幕上可见。