Я использую реагирующую навигацию версии 4. Моя цель - скрыть навигатор панели вкладок только на готовом экране. ни один
tabBarStyle: { display: "none" }
ни
tabBarVisible: false
Работа.
Мой навигатор выглядит так:
const navigator = createSwitchNavigator({
resolveAuth: ResolveAuthScreen,
default: createBottomTabNavigator({
unAuthenticatedFeed: UnAuthenticatedFeedScreen,
camera: UnavailableScreen,
signupFlow: createStackNavigator({
selectAuthentication: SelectAuthenticationScreen,
login: LoginScreen,
signup: SignupScreen,
forgotPw: ForgotPasswordScreen,
storageChoice: StorageChoiceScreen,
validateSeedPhrase: validateSeedPhraseScreen,
done: {
screen: DoneScreen,
navigationOptions:{
headerShown: false,
tabBarStyle: { display: "none" },
tabBarVisible: false
}
}
})
}),
mainFlow: createBottomTabNavigator({
feed: FeedScreen,
camera: CameraScreen,
profile: ProfileScreen,
}),
})
кто-нибудь знает, почему это может быть так? спасибо за любой совет!
Я решил это с помощью:
signupFlow.navigationOptions = ({navigation}) =>{
let tabBarVisible = true;
let routeName = navigation.state.routes[navigation.state.index].routeName
if ( routeName == 'done' ) {
tabBarVisible = false
}
return {
tabBarVisible,
}
}
const navigator = createSwitchNavigator({
resolveAuth: ResolveAuthScreen,
default: createBottomTabNavigator({
unAuthenticatedFeed: UnAuthenticatedFeedScreen,
camera: UnavailableScreen,
signupFlow: signupFlow
},
{
defaultNavigationOptions: ({ navigation }) => ({
tabBarIcon: ({ focused, horizontal, tintColor }) => {
const { routeName } = navigation.state
let iconName
if (routeName === 'unAuthenticatedFeed') {
iconName = focused ? 'home' : 'home'
return <Feather name = {iconName} size = {25} color = {tintColor} />
}
else if (routeName === 'camera') {
iconName = focused ? 'camera' : 'camera'
return <Feather name = {iconName} size = {25} color = {tintColor} />
}
else if (routeName === 'signupFlow') {
iconName = focused ? 'login' : 'login'
return <Entypo name = {iconName} size = {25} color = {tintColor} />
}
},
}),
tabBarOptions: {
activeTintColor: 'blue',
inactiveTintColor: 'gray',
showLabel: false
},
})}