底部栏上的 React Navigation 停止后退按钮行为
React Navigation stop back button behaviour on bottom bar
嘿,我正在使用 React Navigation 的 createBottomTabNavigator() 并且我有一个自定义顶部栏,我用我自己的状态更新它。问题是当我点击一个标签时,每次导航都会调用监听器,因此如果您转到屏幕 2,顶部栏会进入错误状态,屏幕 2 的顶部栏会发生变化。当我按下顶部栏后退按钮时,它会返回到屏幕 1 并将顶部栏更改为屏幕 1 顶部栏。现在,如果我使用 bottombar 选项卡而不是使用 topbar 选项卡向后导航,它会将 topbar 从屏幕 2 保留下来。所以我的问题是,如果我按下底部栏,它会导航回初始屏幕,我是否可以以某种方式禁用它1.
<Tab.Screen
listeners={() => {
switchTab(0);
}}
name="Input"
children={() => (
<SuchStackContainer
ref={suchStackRef}
switchStack={switchStack}
listings={listings}
setListings={setListings}
/>
)}
options={{
tabBarLabel: 'Suche',
tabBarIcon: ({color, size}) => (
<Ionicons name="car" color={color} size={size} />
),
}}
/>
我假设您正在使用 Bottom Tabs Navigator from React Navigation. As mentioned in the docs,您可以覆盖 onPress
方法并将其导航到所需的选项卡。这些可以在 Tab.navigator
的 screenOptions
属性或 Tab.Screen
的选项属性下指定。如果您还需要我的帮助,请告诉我
function MyTabBar({ navigation }) {
return (
<Button
title="Go somewhere"
onPress={() => {
// Navigate using the `navigation` prop that you received
navigation.navigate('SomeScreen');
}}
/>
);
}
嘿,我正在使用 React Navigation 的 createBottomTabNavigator() 并且我有一个自定义顶部栏,我用我自己的状态更新它。问题是当我点击一个标签时,每次导航都会调用监听器,因此如果您转到屏幕 2,顶部栏会进入错误状态,屏幕 2 的顶部栏会发生变化。当我按下顶部栏后退按钮时,它会返回到屏幕 1 并将顶部栏更改为屏幕 1 顶部栏。现在,如果我使用 bottombar 选项卡而不是使用 topbar 选项卡向后导航,它会将 topbar 从屏幕 2 保留下来。所以我的问题是,如果我按下底部栏,它会导航回初始屏幕,我是否可以以某种方式禁用它1.
<Tab.Screen
listeners={() => {
switchTab(0);
}}
name="Input"
children={() => (
<SuchStackContainer
ref={suchStackRef}
switchStack={switchStack}
listings={listings}
setListings={setListings}
/>
)}
options={{
tabBarLabel: 'Suche',
tabBarIcon: ({color, size}) => (
<Ionicons name="car" color={color} size={size} />
),
}}
/>
我假设您正在使用 Bottom Tabs Navigator from React Navigation. As mentioned in the docs,您可以覆盖 onPress
方法并将其导航到所需的选项卡。这些可以在 Tab.navigator
的 screenOptions
属性或 Tab.Screen
的选项属性下指定。如果您还需要我的帮助,请告诉我
function MyTabBar({ navigation }) {
return (
<Button
title="Go somewhere"
onPress={() => {
// Navigate using the `navigation` prop that you received
navigation.navigate('SomeScreen');
}}
/>
);
}