我有一个类似于下面的标签栏。在每个选项卡中,我都有一个嵌套的堆栈导航器。 每当堆栈不在其初始路径上时,我都想隐藏标签栏。在文档中,它被声明为应该将堆栈放置在初始堆栈导航器中。
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>
所以基本上我的问题是,如何以最佳方式不在初始路线上时隐藏标签的行为?
答案 0 :(得分:0)
我最终使用了文档建议的内容,那就是将所有屏幕都放置在应用堆栈中,而不是单个嵌套堆栈中。