我正在构建一个反应原生应用程序并使用反应导航 v6 库。我已经构建了一个反应导航器,它在大多数情况下都可以正常工作,但是在导航到某个页面时我遇到了这个错误。
我有一个堆栈导航器:
<NavigationContainer>
<Stack.Navigator >
<Stack.Screen name='LandingScreen' component={LandingScreen} options={{headerShown: false}} />
<Stack.Screen name='LoginScreen' component={LoginScreen} options={{headerShown: false}} />
<Stack.Screen name='RegisterScreen' component={RegisterScreen} options={{headerShown: false}} />
<Stack.Screen name='CocktailDetailScreen' component={CocktailDetailScreen} options={{ header: () => <Header/> }} />
<Stack.Screen name='HomeScreen' component={DrawerNavigator} options={{ header: () => <Header/> }} />
</Stack.Navigator>
</NavigationContainer>
和抽屉导航器:
<Drawer.Navigator screenOptions={{
drawerStyle: {
backgroundColor: 'white',
zIndex: 100
},
drawerPosition: 'right'
}}>
<Drawer.Screen name='Search cocktails' component={HomeScreen} options={{headerShown: false}} />
<Drawer.Screen name='Profile' component={ProfileScreen} options={{headerShown: false}} />
<Drawer.Screen name='Publish a recipe' component={PublishRecipeScreen} options={{headerShown: false}} />
<Drawer.Screen name='Favorites' component={FavoritesScreen} options={{headerShown: false}} />
<Drawer.Screen name='Published recipes' component={PublishedRecipesScreen} options={{headerShown: false}} />
<Drawer.Screen name='Log out' component={LandingScreen} options={{headerShown: false}} />
</Drawer.Navigator>
导航到 CocktailDetailScreen 时会出现问题,问题是抽屉无法打开。抽屉从标题组件(由 CocktailDetailScreen、homeScreen 和抽屉内的所有屏幕共享)打开并打开它,我正在使用navigation.dispatch(DrawerActions.toggleDrawer())
. 这在除此之外的每个屏幕上都可以正常工作。
我想如果我从堆栈导航器中删除 CocktailDetailScreen 并将其添加到抽屉导航器中,那么抽屉会正常打开。但我不希望这样,因为这个页面只能通过其他屏幕访问,而不是直接从“菜单”/导航器访问。
我确信这是可能的,但我不明白我做错了什么。也许我没有正确嵌套导航器,或者屏幕根本不应该在导航器中?