Более подробную информацию можно найти в официальном документе. Протестировано для работы с версией 3.0.9:
Навигатор вкладок содержит стек, и вы хотите скрыть панель вкладок на определенных экранах
измененный код с:
const FeedStack = createStackNavigator({
FeedHome: FeedScreen,
Details: DetailsScreen,
});
const TabNavigator = createBottomTabNavigator({
Feed: FeedStack,
Profile: ProfileScreen,
});
const AppNavigator = createSwitchNavigator({
Auth: AuthScreen,
Home: TabNavigator,
});
К:
const FeedStack = createStackNavigator({
FeedHome: FeedScreen,
/* any other route you want to render under the tab bar */
});
const TabNavigator = createBottomTabNavigator({
Feed: FeedStack,
Profile: ProfileScreen,
});
const HomeStack = createStackNavigator({
Tabs: TabNavigator,
Details: DetailsScreen,
/* any other route you want to render above the tab bar */
});
const AppNavigator = createSwitchNavigator({
Auth: AuthScreen,
Home: HomeStack,
});
Кроме того, в этом примереFeedScreen будет иметь два заголовка: один из FeedStack, а другой из HomeStack.Чтобы решить эту проблему, одним из решений является установка высоты заголовка по умолчанию HomeStack равной 0 и переопределение высоты в DetailsScreen.Ниже приведен пример:
const HomeStack = createStackNavigator(
{
Tabs: TabNavigator,
Details: DetailsScreen,
/* any other route you want to render above the tab bar */
},
{
initialRouteName: 'Tabs',
defaultNavigationOptions: {
headerStyle: { height: 0, },
headerForceInset: { top: 'never', bottom: 'never' },
},
},
);
Другое решение:
Стек содержит навигатор с вкладками, и вы хотите установить заголовокв заголовке стека
const TabNavigator = createBottomTabNavigator({
Feed: FeedStack,
Profile: ProfileStack,
});
TabNavigator.navigationOptions = {
// Hide the header from AppNavigator stack
header: null,
};
Ну, для меня эти решения довольно хитры.Во всяком случае, это работает.