【问题标题】:Disable navigation to top of stack in @react-navigation/bottom-tabs在@react-navigation/bottom-tabs 中禁用导航到堆栈顶部
【发布时间】:2022-01-24 14:23:24
【问题描述】:

我的应用中有一个主底部选项卡导航器,其中包含三个屏幕,每个页面都包含一个堆栈导航器。问题是,每当我在聚焦时按下底部选项卡中的图标时,堆栈将返回到其相应堆栈导航器的第一页。我不希望这种情况发生在我的LoanNavigator 屏幕上。但它可以发生在其他屏幕上。我怎样才能做到这一点?我的代码如下所示:
MainBottomTabsNavigator.jsx

return (
        <TabBarContext.Provider value={{ props: tabBarProps, setProps: setTabBarProps }}>
            <Tab.Navigator initialRouteName='loan'>
                <Tab.Screen name="settings" component={SettingsStackNavigator}
                <Tab.Screen name="loan" component={LoanStackNavigator} />
                <Tab.Screen name="wallet" component={WalletStackNavigator}
            </Tab.Navigator>
        </TabBarContext.Provider>
    )

LoanNavigator.jsx

return (
        <Stack.Navigator>
            <Stack.Screen name="calculator" component={Loan.Calculator} />
            <Stack.Screen name="confirmation-modal" component={Loan.ConfirmationModal} options={{ 
                presentation: 'modal',
                detachPreviousScreen: false,
                cardStyle: { backgroundColor: 'transparent' }
             }} />
            <Stack.Screen name="choose-shop" component={Loan.ChooseShop} />
            <Stack.Screen name="deposit" component={Loan.Deposit} />
        </Stack.Navigator>
    )

【问题讨论】:

    标签: reactjs react-native react-navigation react-navigation-bottom-tab


    【解决方案1】:

    您可以从documentation 找到如何拥有自己的自定义实现。

    你可以这样做:

    <Tab.Navigator tabBar={(props) => <MyTabBar {...props} />}>
    

    简化的工作示例:https://snack.expo.dev/@tnr_c/custombottab

    【讨论】:

    • 实际上,我确实有自己的标签栏自定义实现(因为我也必须在其他地方渲染标签栏)。但是我一直在寻找一种官方的方式来做到这一点,显然没有官方的方式。
    • 我会说这是官方的方式,因为它是这样记录的。