Reputation: 101
I have in my app Bottom Tab Navigator version 6x. Im looking for solution how to hide a tab bar to one of screen which I use in my app - reviewDetail.js
Here is my navigation file:
AppNavigator.js
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import React from "react";
import about from "../screens/about";
import home from "../screens/home";
import reviewDetails from "../screens/reviewDetails";
const Tab = createBottomTabNavigator();
const AppNavigator = () => (
<Tab.Navigator>
<Tab.Screen
name="about"
component={about}
options={{
title: "About",
}}
></Tab.Screen>
<Tab.Screen
name="home"
component={home}
options={{
title: "Home",
}}
></Tab.Screen>
<Tab.Screen name="reviewDetails" component={reviewDetails}></Tab.Screen>
</Tab.Navigator>
);
export default AppNavigator;
here is my app.js
App.js
import React from "react";
import { NavigationContainer, useNavigation } from "@react-navigation/native";
import AppNavigator from "./navigation/AppNavigator";
export default function App() {
return (
<>
<NavigationContainer>
<AppNavigator />
</NavigationContainer>
</>
);
}
Here is what I have:
What should I change in my code to hide "reviewDetails" tab bar? I still want to navigate to reviewDetails because I use it in my app, I only need to hide this tab bar.
Upvotes: 3
Views: 9108
Reputation: 11
I don’t understand why the correct answer was marked as hiding the entire tabBar:
tabBarStyle: { display: 'none' }
If the problem was in hiding one item from the tabBar.
function AppNavigator() {
return (
<Tab.Navigator>
<Tab.Screen name='about' component={about} />
<Tab.Screen
name='home'
component={home}
options={{ tabBarStyle: { display: 'none' } }} // Hide tabBar from the screan
/>
<Tab.Screen
name='reviewDetails'
component={reviewDetails}
options={{ tabBarItemStyle: { display: 'none' } }} // Hide item from tabBar
/>
</Tab.Navigator>
);
}
Upvotes: 1
Reputation: 51
If you want to hide the bottom tab for all the screens of a stack. then place the code given below to the first screen of that stack.
//For hiding tab from a certain page
useLayoutEffect(() => {
const hideUnsubscribe = navigation.addListener('focus', e => {
let parentNav = props.navigation.getParent();
parentNav.setOptions({
tabBarStyle: {display: 'none'},
});
});
}, []);
If you want to show it again then place the code given below to the screen from where the tab will be available.
//It will make the bottom tab visible
useLayoutEffect(() => {
const hideUnsubscribe = navigation.addListener('focus', e => {
let parentNav = props.navigation.getParent();
parentNav.setOptions({
tabBarStyle: {...tabBarStyle, display: 'flex'},
});
});
Note: here tabBarStyle is the main style applied to the tab bar. You need to export that style to import it here.
Upvotes: 3
Reputation: 3649
In react native navigati6.x on you have to use tabBarStyle: { display: 'none' }
Upvotes: 1