隐藏嵌套堆栈导航中的自定义标签栏

时间:2020-10-07 17:51:36

标签: react-native expo react-native-navigation

我有一个类似于下面的标签栏。在每个选项卡中,我都有一个嵌套的堆栈导航器。 每当堆栈不在其初始路径上时,我都想隐藏标签栏。在文档中,它被声明为应该将堆栈放置在初始堆栈导航器中。

https://reactnavigation.org/docs/hiding-tabbar-in-screens/

但是,这没有任何意义,因为我已经注册了客户并没有登录那里的所有路由,所以我认为将整个应用程序放在一个堆栈导航器中是违反直觉的。此外,它降低了首先具有选项卡导航的目的。

我也尝试了tabBarVisible道具并有条件地更改它。但是,这给我带来了一些问题。 首先,它似乎在mu自定义tabBar上不起作用。此外,它为我提供了每个渲染的每个选项卡的状态。因此,这会导致某些不良行为。最后,从文档中不建议这样做。

<Tab.Navigator
 tabBar={props => (
  <TabBar
     onPress={tabIndex => changeTab(tabIndex, props)}
     display={false}
     values={[
       { title: "Balance", icon: 'view-dashboard'},
       { title: "Faktura", icon: 'file-pdf'},
       { title: "Rabatter", icon: 'gift'},
       { title: "Profil", icon: 'account-details'},
       { title: "Mere", icon: 'dots-horizontal' }
     ]}/>
   )}>
  <Tab.Screen
  name="Balance"
  component={BalanceStackNavigator}
  />
  <Tab.Screen
  name="Invoice"
  component={InvoiceStackNavigator}
  />
  <Tab.Screen
  name="BlueBenefit"
  component={BlueBenefitStackNavigator}
  />
  <Tab.Screen
  name="User"
  component={UserStackNavigator}
  />
  <Tab.Screen
  name="CrossSale"
  component={CrossSaleStackNavigator}
  />
</Tab.Navigator>

所以基本上我的问题是,如何以最佳方式不在初始路线上时隐藏标签的行为?

1 个答案:

答案 0 :(得分:0)

我最终使用了文档建议的内容,那就是将所有屏幕都放置在应用堆栈中,而不是单个嵌套堆栈中。