在嵌套堆栈导航中隐藏自定义选项卡



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

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>

所以,基本上我的问题是,当不在初始路线上时,我如何以最佳方式实现隐藏选项卡的行为?

我最终使用了文档中建议的方法,即将所有屏幕放置在我的应用程序堆栈中,而不是单独的嵌套堆栈中。

最新更新