Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

TabNavigator.js 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import React from "react";
  2. import { createNativeStackNavigator } from "@react-navigation/native-stack";
  3. import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
  4. import { getFocusedRouteNameFromRoute } from "@react-navigation/native";
  5. import HomeScreen from "../screens/HomeScreen";
  6. import Ionicons from "@expo/vector-icons/Ionicons";
  7. import FavoriteScreen from "../screens/FavoriteScreen";
  8. import PostDetailsScreen from "../screens/PostDetailsScreen";
  9. const Tab = createBottomTabNavigator();
  10. const Stack = createNativeStackNavigator();
  11. const HomeStack = () => {
  12. return (
  13. <Stack.Navigator>
  14. <Stack.Screen
  15. name="Home"
  16. component={HomeScreen}
  17. options={{ headerShown: false }}
  18. />
  19. <Stack.Screen
  20. name="PostDetails"
  21. component={PostDetailsScreen}
  22. options={({route}) => ({
  23. title: route.params.title
  24. })}
  25. />
  26. </Stack.Navigator>
  27. );
  28. };
  29. const TabNavigator = () => {
  30. return (
  31. <Tab.Navigator
  32. screenOptions={{
  33. headerShown: false,
  34. tabBarShowLabel: false,
  35. tabBarStyle: { backgroundColor: "#AD40AF" },
  36. tabBarInactiveTintColor: "#fff",
  37. tabBarActiveTintColor: "yellow",
  38. }}
  39. >
  40. <Tab.Screen
  41. name="Home2"
  42. component={HomeStack}
  43. options={({ route }) => ({
  44. tabBarStyle: {
  45. display: getTabBarVisibility(route),
  46. backgroundColor: "#AD40AF",
  47. },
  48. tabBarIcon: ({ color, size }) => (
  49. <Ionicons name="home-outline" color={color} size={size} />
  50. ),
  51. })}
  52. />
  53. <Tab.Screen
  54. name="Favorite"
  55. component={FavoriteScreen}
  56. options={{
  57. tabBarIcon: ({ color, size }) => (
  58. <Ionicons name="heart-outline" color={color} size={size} />
  59. ),
  60. }}
  61. />
  62. </Tab.Navigator>
  63. );
  64. };
  65. const getTabBarVisibility = (route) => {
  66. const routeName = getFocusedRouteNameFromRoute(route) ?? "Feed";
  67. if (routeName === "Details") {
  68. return "none";
  69. }
  70. return "flex";
  71. };
  72. export default TabNavigator;