0

我有一个带有许多子导航器的抽屉导航器。在 Android 上,标题返回箭头和导航栏返回按钮都可以工作并返回到之前的屏幕。例如,如果我通过抽屉导航到 bScreen1,两个按钮都会让我回到应用程序的主屏幕,即 aScreen1

在 IOS 上,标题返回箭头工作正常,但是,向后滑动让我回到 AuthNavigator 内的登录屏幕,而不是 aScreen1,它对我来说是 0 感,因为它在抽屉导航器之外,并且在 RootNavigator 内的同一级别。向后滑动不会执行 navigation.goBack()。

我已经尝试通过在“beforeRemove”事件上添加一个侦听器然后调用 navigation.goBack() 来覆盖滑动行为,但是在移动到正确的屏幕之前仍然会显示错误的屏幕(前一个)

...
import { createDrawerNavigator } from '@react-navigation/drawer'
import { createStackNavigator } from '@react-navigation/stack';

const DrawerNavigator = createDrawerNavigator();
const rootStack = createStackNavigator();

...
drawerNavigator() {
 return (
  <DrawerNavigator.Navigator>
    <DrawerNavigator.Screen component={aNavigator} />
    <DrawerNavigator.Screen component={bNavigator} />
    ...
    <DrawerNavigator.Screen component={zNavigator} />
  </DrawerNavigator.Navigator>
)}

aNavigator() {
return (
  <ANavigator.Navigator>
    <ANavigator.Screen component={aScreen1} />
    ...
    <ANavigator.Screen component={aScreen10} />
  </ANavigator.Navigator>
)}

bNavigator() {
return (
  <ANavigator.Navigator>
    <ANavigator.Screen component={bScreen1} />
    ...
    <ANavigator.Screen component={bScreen10} />
  </ANavigator.Navigator>
)}


 <rootStack.Navigator initialRouteName="AuthNavigator" screenOptions={{ headerShown: false }}>
       <rootStack.Screen name="AuthNavigator" component={createAuthNavigator} />
       <rootStack.Screen name="DrawerNavigator" component={drawerNavigator} />
</rootStack.Navigator>

ps:我用的都是最新版的导航包

4

1 回答 1

0

我设置的时候也遇到了同样的问题animationEnabled: false,如果你设置为true你应该可以滑动切换屏幕。

于 2021-10-27T17:21:08.650 回答