当我按下BottomTabNavigator上的特定选项卡时,我想导航到屏幕。
通常,当按下选项卡时,它将自动导航到配置的屏幕。但我不想有这种行为。我想隐藏该屏幕的底部选项卡,并在顶部栏中也提供back功能。我通常在ReactNavigationStack屏幕中使用navigation.navigate('routeName')
。但是我不知道如何/在哪里在BottomTabNavigator配置中编写此代码。
例如,我在底部栏中有以下5个标签。我想在按下添加按钮时导航到AddNewScreen。我不知道该onPress事件放在哪里。我试图将其放在options
和BottomTab.Screen
下。但仍然没有运气。
我试图拦截onPress事件以使用navigation.navigate
。但是它甚至没有被击中,它总是使用标签栏打开AddNewScreen。
<BottomTab.Navigator initialRouteName={INITIAL_ROUTE_NAME}>
<BottomTab.Screen
name="Home"
component={HomeScreen}
initialParams="Home Params"
options={{
title: 'Home',
tabBarIcon: ({ focused }) => <TabBarIcon focused={focused} name="md-home" iconType="ion" />,
}}
/>
<BottomTab.Screen
name="AddNew"
component={AddNewScreen}
options={{
title: 'Add',
tabBarIcon: ({ focused }) => <TabBarIcon focused={focused} name="md-add-circle" iconType="ion"
onPress={(e) => {
e.preventDefault();
console.log(e)
}} />,
}}
/>
</BottomTab.Navigator>
添加新屏幕始终使用底部的标签栏打开。
问题:
我没有尝试过,但我认为...您可以将bottomNavigator放在Stack Navigator中,然后单击加号图标。您可以导航到AddNewItem屏幕。如果它不起作用,那么您可以尝试以下替代方法:-当您单击加号图标时。在您的bottomNavigator仍在的情况下,它将导航到屏幕。然后,您可以在bottomNavigator屏幕上自动(强制)调用堆栈导航到AddNewItem屏幕的功能。
您可以使用标签栏按钮在底部的工具栏中具有自定义功能。代码如下所示
<Tab.Screen name="Settings2" component={SettingsScreen} options={{
tabBarButton: (props) => (<TouchableOpacity {...props} onPress={()=>alert(123)}/>),
}}/>
这将显示一个普通的底部标签栏按钮,但onclick会显示警报,您可以将代码替换为导航或所需的任何其他代码。同样,“ SettingsScreen”组件可以是返回null的虚拟组件。
希望这会有所帮助。