Но есть одна проблема. Когда мы вызываем navigation.openDrawer() в нашем HomeScreen, то всегда открывается левый ящик, поскольку он является непосредственным родителем экрана.
Чтобы решить эту проблему, нам необходимо использовать navigation.getParent для обращения к правому ящику, который является родителем левого ящика. Таким образом, наш код будет выглядеть следующим образом:
123456
<ButtononPress={()=>navigation.openDrawer()}title="Open left drawer"/><ButtononPress={()=>navigation.getParent().openDrawer()}title="Open right drawer"/>
Однако это означает, что наша кнопка должна знать о родительских навигаторах, что не является идеальным вариантом. Если наша кнопка будет вложена в другие навигаторы, то потребуется несколько вызовов getParent(). Чтобы решить эту проблему, мы можем использовать пропс id для идентификации родительского навигатора.
Для настройки содержимого ящика мы можем использовать пропс drawerContent для передачи функции, которая отображает пользовательский компонент.
import*asReactfrom'react';import{Button,Text,View}from'react-native';import{createDrawerNavigator}from'@react-navigation/drawer';import{NavigationContainer}from'@react-navigation/native';functionHomeScreen({navigation}){return(<Viewstyle={{flex:1,alignItems:'center',justifyContent:'center',}}><ButtononPress={()=>navigation.getParent('LeftDrawer').openDrawer()}title="Open left drawer"/><ButtononPress={()=>navigation.getParent('RightDrawer').openDrawer()}title="Open right drawer"/></View>);}functionRightDrawerContent(){return(<Viewstyle={{flex:1,alignItems:'center',justifyContent:'center',}}><Text>Thisistherightdrawer</Text></View>);}constLeftDrawer=createDrawerNavigator();functionLeftDrawerScreen(){return(<LeftDrawer.Navigatorid="LeftDrawer"screenOptions={{drawerPosition:'left'}}><LeftDrawer.Screenname="Home"component={HomeScreen}/></LeftDrawer.Navigator>);}constRightDrawer=createDrawerNavigator();functionRightDrawerScreen(){return(<RightDrawer.Navigatorid="RightDrawer"drawerContent={(props)=>(<RightDrawerContent{...props}/>)}screenOptions={{drawerPosition:'right',headerShown:false,}}><RightDrawer.Screenname="HomeDrawer"component={LeftDrawerScreen}/></RightDrawer.Navigator>);}exportdefaultfunctionApp(){return(<NavigationContainer><RightDrawerScreen/></NavigationContainer>);}
Здесь мы передаем строки "LeftDrawer" и "RightDrawer" (здесь можно использовать любую строку) в свойстве id навигаторов ящиков. Затем мы используем navigation.getParent('LeftDrawer').openDrawer() для открытия левого ящика и navigation.getParent('RightDrawer').openDrawer() для открытия правого ящика.