在特定屏幕中隐藏标签栏 React-Native
Hiding tab bar in specific screens React-Native
我通读了 the documentation 这个具体问题,但我还是不太明白。这是我的场景:
我有一个 BottomTabNavigator
,其中包含三个选项卡:“主页”、“相机”和“个人资料”。使用我当前的设置,我可以在这些屏幕之间切换,并且 TabBar 会显示在每个屏幕上。然而,我想要的是在 TabBar 上有相同的三个选项卡项目,但 TabBar 不显示在相机屏幕上。
如果我的理解是正确的,我所附的 link 只允许您从屏幕上删除 TabBar,前提是您从 TabBar 中删除该选项卡(例如,如果我删除了该选项卡,我只能实现我想要的效果TabBar 中的相机,但我想将相机选项卡保留在 TabBar 中。
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen
name="Home"
component={HomeScreen}
/>
<Tab.Screen
name="Camera"
component={CameraScreen}
/>
<Tab.Screen
name="Profile"
component={ProfileScreen}
/>
</Tab.Navigator>
</NavigationContainer>
);
}
我试过了:
options={{ tabBarVisable=false }}
但是也没用。
import { getFocusedRouteNameFromRoute } from '@react-navigation/native';
const getTabBarVisibility = (route) => {
const routeName = getFocusedRouteNameFromRoute(route) ?? 'Home';
const disabledScreens = ['CameraScreen'];
if (disabledScreens.includes(routeName)) {
return false;
}
return true;
};
<Tab.Navigator
screenOptions={({route}) => ({
tabBarVisible: getTabBarVisibility(route)
})
>
我通读了 the documentation 这个具体问题,但我还是不太明白。这是我的场景:
我有一个 BottomTabNavigator
,其中包含三个选项卡:“主页”、“相机”和“个人资料”。使用我当前的设置,我可以在这些屏幕之间切换,并且 TabBar 会显示在每个屏幕上。然而,我想要的是在 TabBar 上有相同的三个选项卡项目,但 TabBar 不显示在相机屏幕上。
如果我的理解是正确的,我所附的 link 只允许您从屏幕上删除 TabBar,前提是您从 TabBar 中删除该选项卡(例如,如果我删除了该选项卡,我只能实现我想要的效果TabBar 中的相机,但我想将相机选项卡保留在 TabBar 中。
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen
name="Home"
component={HomeScreen}
/>
<Tab.Screen
name="Camera"
component={CameraScreen}
/>
<Tab.Screen
name="Profile"
component={ProfileScreen}
/>
</Tab.Navigator>
</NavigationContainer>
);
}
我试过了:
options={{ tabBarVisable=false }}
但是也没用。
import { getFocusedRouteNameFromRoute } from '@react-navigation/native';
const getTabBarVisibility = (route) => {
const routeName = getFocusedRouteNameFromRoute(route) ?? 'Home';
const disabledScreens = ['CameraScreen'];
if (disabledScreens.includes(routeName)) {
return false;
}
return true;
};
<Tab.Navigator
screenOptions={({route}) => ({
tabBarVisible: getTabBarVisibility(route)
})
>