реагировать на родную панель вкладок не скрывать для определенного экрана

Я использую реагирующую навигацию.
Я использую createStackNavigator внутри createBottomTabNavigator.

Я хочу скрыть панель вкладок для SignInScreen, которая находится внутри AccountTab, но она не работает.

export default createBottomTabNavigator({
    HomeTab: { screen: createStackNavigator ({
      HomeTabScreen     : { screen:HomeTabScreen },
      ProductScreen     : { screen:ProductScreen },
    }),
      initialRouteName: 'HomeTabScreen',
    },

    AccountTab: { screen: createStackNavigator ({
      AccountTabScreen  : { screen:AccountTabScreen },
      RegisterScreen    : { screen:RegisterScreen },
      SignInScreen      : { screen:SignInScreen },
    }),
      initialRouteName: 'AccountTabScreen',
    },

  },
    {
        initialRouteName: 'HomeTab',        
        navigationOptions: ({ navigation }) => ({
            tabBarLabel: ({ focused, tintColor }) => {
                const { routeName } = navigation.state;
                let name;
                if (routeName === 'HomeTab') {
                  name = "Home";
                } else {
                  name = "Account";
                }
                return <Text style={[styles.titleStyle, focused ? styles.titleSelectedStyle : {}]}>{name}</Text>;
            },
        }),
});

Я пробую три метода, но они не работают.
методы следующие

1) Я применил tabBarVisible: false в приведенном выше коде, чтобы скрыть панель вкладок для всего экрана.

2) Я применил функцию для tabBarVisible, такую ​​как функция tabBarLabel в приведенном выше коде.

3) Я применил tabBarVisible: false в navigationOptions внутри SignInScreen.

Как скрыть панель вкладок для SignInScreen?


person Bhaumik Surani    schedule 08.09.2018    source источник


Ответы (2)


Есть ветка git, которая может вам помочь: https://github.com/react-navigation/react-navigation-tabs/issues/19#issuecomment-410857516

В основном вам следует попробовать изменить параметры навигации AccountTab следующим образом:

AccountTab: { 
  screen: createStackNavigator ({
        AccountTabScreen  : { screen:AccountTabScreen },
        RegisterScreen    : { screen:RegisterScreen },
        SignInScreen      : { screen:SignInScreen },
  }),
  initialRouteName: 'AccountTabScreen',
  navigationOptions: ({navigation}) => {
    let { routeName } = navigation.state.routes[navigation.state.index];
    let navigationOptions = {};

    if (routeName === 'SignInScreen') {
        navigationOptions.tabBarVisible = false;
    }

    return navigationOptions;
  }
},
person needsleep    schedule 08.09.2018

Если вы хотите скрыть tabNavigation на экране2 (часть StackNavigator, тогда

navigationOptions: ({navigation}) => {
      let {routeName} = navigation.state.routes[navigation.state.index];
      let navigationOptions = {};
      console.log('Route Name=' + JSON.stringify(routeName));

      if (routeName === 'Screen') {
        navigationOptions.tabBarVisible = false;
      }

      return navigationOptions;
person Pavan    schedule 09.02.2020