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

Я создал навигатор с 4 экранами навигатора вкладок: ›Главная, Поиск, Выгрузка и Библиотека; и у меня есть экраны навигации по стеку, такие как регистрация, вход, домашние вкладки и видео. Теперь я хочу удалить нижнюю панель вкладок с экрана загрузки, но не уверен, возможно ли это?

Ниже приведен точный код, который я написал:

import React from 'react';
import 'react-native-gesture-handler';
import {StatusBar} from 'react-native';
import {NavigationContainer, DarkTheme} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {createMaterialBottomTabNavigator} from '@react-navigation/material-bottom-tabs';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialIcons';

import Home from '../screens/Home';
import Search from '../screens/Search';
import Library from '../screens/Library';
import ProfileAuthor from '../screens/ProffileAuthor';
import Shoot from '../screens/Shoot';
import LoginScreen from '../screens/LoginScreen';
import SignUp from '../screens/SignUp';

const Stack = createStackNavigator();
const Tab = createMaterialBottomTabNavigator();

function myTabs() {
  return (
    <Tab.Navigator
      initialRouteName="Home"
      activeColor="#000"
      inactiveColor="#000"
      barStyle={{
        backgroundColor: '#FFF',
      }}>
      <Tab.Screen
        name="Home"
        component={Home}
        options={{
          title: 'Home',
          tabBarLabel: 'Home',
          tabBarIcon: ({color}) => (
            <MaterialCommunityIcons color={color} name="home" size={26} />
          ),
        }}
      />
      <Tab.Screen
        name="Search"
        component={Search}
        options={{
          title: 'Search',
          tabBarLabel: 'Search',
          tabBarIcon: ({color}) => (
            <MaterialCommunityIcons color={color} name="search" size={26} />
          ),
        }}
      />
      <Tab.Screen
        name="Upload"
        component={Shoot}
        options={{
          title: 'Upload',
          tabBarLabel: 'Upload',
          tabBarIcon: ({color}) => (
            <MaterialCommunityIcons color={color} name="add-box" size={26} />
          ),
        }}
      />
      <Tab.Screen
        name="Library"
        component={Library}
        options={{
          title: 'Library',
          tabBarLabel: 'Library',
          tabBarIcon: ({color}) => (
            <MaterialCommunityIcons
              color={color}
              name="person-outline"
              size={26}
            />
          ),
        }}
      />
    </Tab.Navigator>
  );
}

const Routes = () => {
  return (
    <NavigationContainer theme={DarkTheme}>
      <Stack.Navigator>
        <Stack.Screen
          name="login"
          component={LoginScreen}
          options={{
            header: () => null,
          }}
        />
        <Stack.Screen
          name="signup"
          component={SignUp}
          options={{
            header: () => null,
          }}
        />
        <Stack.Screen
          name="Home"
          component={myTabs}
          options={{
            header: () => null,
          }}
        />
        
        <Stack.Screen
          name="Video"
          component={ProfileAuthor}
          options={{
            header: () => null,
          }}
        />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default Routes;

может ли кто-нибудь сказать мне, возможно ли это в этой структуре, если да, то как реализовать? любая помощь была бы замечательной.


person TRINA CHAUDHURI    schedule 01.09.2020    source источник


Ответы (1)


tabBarVisible: false

Он работает, когда вы использовали createBottomTabNavigator из @ response-navigation / bottom-tabs. но если вы будете использовать createMaterialBottomTabNavigator из @ response-navigation / material-bottom-tabs для создания нижних вкладок, это не сработает. createMaterialBottomTabNavigator не может скрыть панель вкладок, вы можете видеть, что в документации нет такой опции. Вам следует попытаться вложить навигатор нижних вкладок в навигатор стека, если вы хотите, чтобы он исчез на других экранах навигатора стека. Приведенный ниже код предназначен для скрытия панели вкладок в createBottomTabNavigator.

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

const BottomTabs = createBottomTabNavigator();

<BottomTabs.Navigator>
  <BottomTabs.Screen name={AppRoute.MORE} component={MoreStack}
        options={({ route }) => ({
            tabBarVisible: getTabBarVisibility(route),
            tabBarLabel: languages.stack_More
        })}
    />
</BottomTabs.Navigator>


const getTabBarVisibility = (route: any) => {
    const routeName = route.state ? route.state.routes[route.state.index].name: '';
   if (routeName === AppRoute.PROFILE
        || routeName === AppRoute.HELP_CENTER
        || routeName === AppRoute.TERMS_CONDITION) {
       return false;
    }
   return true;
}
person Bansari Patel    schedule 01.09.2020