我有一个带有许多子导航器的抽屉导航器。在 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:我用的都是最新版的导航包