反应本机选项卡不会针对特定屏幕隐藏

时间:2018-09-08 11:34:27

标签: reactjs react-native react-navigation tabbar stack-navigator

我正在使用反应导航。
我在createBottomTabNavigator中使用了createStackNavigator。

我想为 AccountTab 内的 SignInScreen 隐藏标签栏,但是它不起作用。

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 ,因此它为所有屏幕都隐藏了 tab bar

2)我在上面的代码中为 tabBarVisible 应用了功能,例如 tabBarLabel函数

3)我在 SignInScreen 内的 navigationOptions 中应用了 tabBarVisible:false

  

如何隐藏 SignInScreen 的标签栏?

2 个答案:

答案 0 :(得分:0)

const NestedNavigator = StackNavigator({
    ScreenOne: {
        screen: ScreenOneComponent
    },
    ScreenTwo: {
        screen: ScreenTwoComponent
    }
});

class NestedNavigatorWrapper extends React.Component {
    constructor(props)  {
        super(props);
    }
    render() {
        return (
            <DashboardNavigator screenProps={{ rootNavigation: this.props.navigation }} />
        );
    }
}
const AppNavigator = StackNavigator({
    Home: {
        screen: HomeComponent
    },
    Nested: {
        screen: NestedNavigatorWrapper
    }
});

答案 1 :(得分:0)

如果您想在screen2(然后是StackNavigator的一部分)中隐藏tabNavigation,

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;