在Tab.Navigator React Native中隐藏特定的Tab.Screen

问题描述 投票:0回答:1

有没有一种方法可以隐藏显示“ ###隐藏我###”的屏幕,或者有一种方法可以定义不会显示在“选项卡导航”中的屏幕?

这里是代码:

    <Tab.Navigator
      screenOptions={({ route }) => ({
        tabBarIcon: ({ focused, color, size }) => {
          let iconName;

          if (route.name === 'Home') {
            iconName = focused
              ? 'ios-home'
              : 'ios-home';
          } else if (route.name === 'Messages') {
            iconName = focused ? 'ios-paper-plane' : 'ios-paper-plane';
          } else if (route.name === 'Todo') {
            iconName = focused ? 'ios-list-box' : 'ios-list';
          } else if (route.name === 'More') {
            iconName = focused ? 'ios-more' : 'ios-more';
          } else if (route.name === 'Videos') {
            iconName = focused ? 'ios-videocam' : 'ios-videocam';
          }
          // You can return any component that you like here!
          return <Ionicons name={iconName} size={size} color={color} />;
        },
      })}
      tabBarOptions={{
        activeTintColor: '#ffcc07',
        inactiveTintColor: 'gray',
      }}>
      <Tab.Screen name="Home" component={DashboardScreen} />
      <Tab.Screen name="Messages" component={MessagesScreen} />
      <Tab.Screen name="Todo" component={TodoScreen} />
      <Tab.Screen name="Videos" component={WisdomReplayScreen} />
      <Tab.Screen name="More" component={MoreOptionsScreen} />
      <Tab.Screen name="Test" component={Test}  ### HIDE ME ###/>
    </Tab.Navigator> 
react-native react-navigation
1个回答
0
投票

您可以像这样确定应隐藏标签栏的屏幕

      function getTabBarVisible(route) {
      const routeName = route.state
        ?  route.state.routes[route.state.index].name
        : route.params?.screen || 'Home';

      if (routeName === 'Home') {
        return false;
      }
      return true;
    }

**and attach it to the tab navigator's screen:**

 <Tab.Screen name="Home" 
        component={HomeStackScreen}
          options={({ route }) => ({
    tabBarVisible: getTabBarVisible(route) })} />
© www.soinside.com 2019 - 2024. All rights reserved.