【问题标题】:React navigation issue trying to hide bottom tab navigation尝试隐藏底部选项卡导航的反应导航问题
【发布时间】:2020-12-08 05:36:19
【问题描述】:

当我导航到消息室屏幕时,我试图隐藏底部选项卡,我尝试使用模式但无法让它工作....下面是我的代码,如果我得到一些帮助将不胜感激

这是我的根导航

  return (
    <NavigationContainer
      theme={colorScheme === 'dark' ? DarkTheme : DefaultTheme}
    >
      <RootNavigator />
    </NavigationContainer>
  );
}

const Stack = createStackNavigator();

function RootNavigator() {
  return (
    <Stack.Navigator screenOptions={{ headerShown: false }}>
      <Stack.Screen name='Root' component={BottomTabNavigator} />
    </Stack.Navigator>
  );
}

这里也是底部标签导航


export default function BottomTabNavigator() {
  const colorScheme = useColorScheme();
  return (
    <BottomTab.Navigator
      initialRouteName='Listing'
      tabBarOptions={{
        activeTintColor: Colors[colorScheme].tint,
        showLabel: false,
      }}
    >
      <BottomTab.Screen
        name='Messages'
        component={TabtwoNavigator}
        options={{
          tabBarIcon: ({ color }) => (
            <Ionicons name='ios-chatboxes' color={color} size={30} />
          ),
        }}
      />
      <BottomTab.Screen
        name='MyListing'
        component={TabFourNavigator}
        options={{
          tabBarIcon: ({ color }) => (
            <Ionicons name='ios-albums' color={color} size={30} />
          ),
        }}
      />
    </BottomTab.Navigator>
  );
}

标签导航器之一的示例如下


function TabtwoNavigator() {
  return (
    <TabTwoStack.Navigator>
      <TabTwoStack.Screen name='Messages' component={MessagesScreen} />
      <TabTwoStack.Screen name='MessagesRoom' component={MessagesRoomScreen}/>
    </TabTwoStack.Navigator>
  );
}

【问题讨论】:

  • 由于用户最终必须导航回标签屏幕(使用后退按钮),将 MessagesRoom 放在顶层 Stack 是否更有意义?

标签: javascript reactjs react-native


【解决方案1】:

如果您将MessagesRoomScreen放在底部标签导航器中,标签将始终显示。解决方法可以像

function RootNavigator() {
  return (
    <Stack.Navigator screenOptions={{ headerShown: false }}>
      .....
      <!-- Add `MessagesRoom` screen here in parent navigator and remove from `TabtwoNavigator` -->
      <Stack.Screen name='MessagesRoom' component={MessagesRoomScreen}/>    
    </Stack.Navigator>
  );
}

【讨论】:

  • 它有效,但不适合我想要的,但我发现使用 useLayOutEffect 钩子为我完成了这项工作....感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2018-03-27
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多