如何在不显示在抽屉中的情况下将导航添加到屏幕

How to add navigation to a screen without it showing up in the drawer

我有这段代码,我在其中设置了一个抽屉导航器

const Drawer = createDrawerNavigator();

const MyDrawer = () => {
  return(
    <Drawer.Navigator initialRouteName="Test">
      <Drawer.Screen name="Test" component={Test}/>
      <Drawer.Screen name="Menu" component={Menu}/>
      <Drawer.Screen name="Dish Detail" component={DishDetail} />
    </Drawer.Navigator>
  );
}

我希望能够通过单击 Menu 屏幕中的按钮组件导航到 Dish Detail 屏幕。但我也希望能够使用抽屉在 TestMenu 屏幕之间导航。因此,当我将导航添加到 Dish Detail 屏幕时,它会出现在抽屉中,这并不好,因为我需要根据单击的按钮向它传递不同的道具。

docs有类似的情况,当你想要一个不显示在底部标签栏中的屏幕时。

解决方案是创建一个堆栈导航器,其中 MyDrawer 是一个屏幕:

const Drawer = createDrawerNavigator();

const MyDrawer = () => {
  return(
    <Drawer.Navigator initialRouteName="Test">
      <Drawer.Screen name="Test" component={Test}/>
      <Drawer.Screen name="Menu" component={Menu}/>
    </Drawer.Navigator>
  );
}

const AppStack = createStackNavigator();

const MyStack = () => {
  return(
    <AppStack.Navigator initialRouteName="Drawer">
      <AppStack.Screen name="Drawer" component={MyDrawer}/>
      <AppStack.Screen name="Dish Detail" component={DishDetail} />
    </AppStack.Navigator>
  );
}