Поэтому я пытаюсь скрыть навигатор нижней панели, когда пользователь переходит к стеку 2, вкладка 3.
В настоящее время я могу скрыть его, если пользователь переходит к экрану, который не часть TopTabs.
В моем текущем примере кода этот экран называется OtherScreen
.
Тем не менее, когда я перехожу на вкладку 3 и пытаюсь посмотреть на currentRoute
, я получаю:
currentRoute: {
key: 'Stack2',
routes: [
{
routeName: 'Stack2',
key: 'id number of some kind',
index: 2,
routes: [
{key: 'Tab1', routeName: 'Tab1'},
{key: 'Tab2', routeName: 'Tab2'},
{key: 'Tab3', routeName: 'Tab3'},
]
}
]
}
Любая идея о том, как я могу узнать, могу ли я проверить, чтобы посмотрите, является ли текущий маршрут Tab 3
из Root Nav, а затем установите tabBarVisible: false
?
Вот фрагмент кода
import {
createBottomTabNavigator,
createMaterialTopTabNavigator,
} from 'react-navigation-tabs';
// STACK 2 Tabs
const Stack2TabNavigatorConfig = {
initialRouteName: 'Tab1',
};
const Stack2TabRouteConfig = {
TAB1: {
screen: Tab1Screen,
navigationOptions: {
tabBarLabel: 'Tab1',
},
},
TAB2: {
screen: Tab1Screen,
navigationOptions: {
tabBarLabel: 'Tab2',
},
},
TAB3: {
screen: Tab1Screen,
navigationOptions: {
tabBarLabel: 'Tab3',
},
},
};
const TopTabs = createMaterialTopTabNavigator(
Stack2TabNavigatorConfig,
Stack2TabRouteConfig,
);
// STACK 2
const Stack2NavigatorConfig = {
initialRouteName: 'Stack2',
headerLayoutPreset: 'center',
};
const Stack2RouteConfigs = {
Stack2: {
screen: TopTabs,
},
OtherScreen: {
screen: 'OtherScreen',
},
};
const Stack2 = createStackNavigator(Stack2NavigatorConfig, Stack2RouteConfigs);
// APP STACK
const TabNavigatorConfig = {
initialRouteName: 'Stack1',
};
const RouteConfigs = {
Stack1: {
screen: Stack1,
navigationOptions: {
tabBarLabel: 'Stack 1',
},
},
Stack2: {
screen: Stack2,
navigationOptions: ({ navigation }) => {
const currentRoute = navigation.state.routes[navigation.state.index];
let routeName;
let tabBarVisible = true;
if (
currentRoute &&
currentRoute.routes &&
currentRoute.routes[1] &&
currentRoute.routes[1].routeName
) {
routeName = currentRoute.routes[1].routeName;
}
if (routeName === 'OtherScreen') {
tabBarVisible = false;
}
return {
tabBarLabel: 'Stack 2',
tabBarVisible,
};
},
},
};
const AppNavigator = createBottomTabNavigator(RouteConfigs, TabNavigatorConfig);
export default AppNavigator;