React Native Navigation:如何显示抽屉中的模式?

React Naitve Navigation: How to show a modal from drawer?

有没有办法在 React Native 中显示抽屉中的模式? 有一个,我根据答案更改了我的代码。

我现在的代码是这样的

MyRootStackNavigator.tsx

const Stack = createStackNavigator<RootStackParamList>();

const MyRootStackNavigator = () => {

  return (
    <Stack.Navigator mode="modal">
      <Stack.Screen
        name="Main"
        component={MyDrawerNavigator}
        options={{ headerShown: false }}
      />
      <Stack.Screen 
        name="MyModal"
        component={MyModal}
      />
    </Stack.Navigator>
  );
};

MyDrawerNavigation.tsx

const Drawer = createDrawerNavigator();

const MyDrawerNavigator = () => {

  return (
    <Drawer.Navigator>
      <Drawer.Screen
        name="Home"
        component={MyStackNavigator}
      />
      <Drawer.Screen
        name="About this app"
        component={About}
      />
    </Drawer.Navigator>
  );
}

但对于此代码,显示模式的部分不会出现在抽屉中。只有 HomeAbout this app 部分出现在抽屉中。如何设置该部分以在抽屉上显示模式?

您可以使用内部有模式的 CustomDrawerContent 并使用按钮打开模式

function CustomDrawerContent(props) {
  const [modalVisible, setModalVisible] = useState(false);
  return (
    <DrawerContentScrollView {...props}>
      <Modal
        style={{ flxe: 1, backgroundColor: 'red' }}
        visible={modalVisible}
        onRequestClose={() => setModalVisible(false)}>
        <Text>Modal Content Here</Text>
        <Button title="Close" onPress={() => setModalVisible(false)} />
      </Modal>
      <DrawerItemList {...props} />
      <DrawerItem
        label="Open Modal"
        onPress={() => {
          setModalVisible(true);
        }}
      />
    </DrawerContentScrollView>
  );
}

DrawerNavigator 应该这样设置

<Drawer.Navigator
  drawerContent={(props) => <CustomDrawerContent {...props} />}>

你可以在这里参考文档 https://reactnavigation.org/docs/drawer-navigator/#providing-a-custom-drawercontent

如果你想继续你在问题中输入的代码,你可以像下面那样导航到关于屏幕(而不是在内容中使用模式)

  <DrawerItem
    label="Open Screen"
    onPress={() => {
      props.navigation.navigate('About')
    }}
  />