无法从堆栈标头React Native v5打开抽屉

问题描述

我正在尝试从标题中打开抽屉,但是我无法弄清楚,下面是我的代码

import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({ 
return (
      <Root>
      <NavigationContainer ref={navigationRef}>

        <Stack.Navigator >
          <Stack.Screen name="Mediclic" component={AppDraw}
            options={
              headerLeft: () =>
                <TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
                  <MaterialIcons name='menu' size={28} color={'white'} />
                </TouchableOpacity>,}
            } />
</Stack.Navigator>
      </NavigationContainer>
 );
  }
}
const AppDraw = () =>

  <Drawer.Navigator>
    <Drawer.Screen name="Accueil" component={AccueilScreen} />
    <Drawer.Screen name="A propos" component={AboutScreen} />
  </Drawer.Navigator>

您可以看到堆栈导航器和抽屉在同一个文件中,但仍然无法使它正常工作 就我而言,我得到TypoErro:undefined不是一个对象(navigation.opendrawer)

我也尝试了调度,但没有成功。

有人可以帮我吗,我已经为此努力了一个多星期! 谢谢

解决方法

在要打开抽屉的屏幕上使抽屉成为子屏幕 假设我要在AccueilScreen中打开抽屉。

我在您的代码中做什么

使用

children = {this.AppDraw}而不是component = {AppDraw} 并写

JpaTokenStore.Builder#claimTimeout(TemporalAmount)

代替

claimTimeout

尝试这个,希望对您有帮助

<Stack.Screen name="Accueil" children={this.AppDraw}
,

我仅使用以下方法解决了该问题:

onPress={() =>  
navigation.dispatch(DrawerActions.toggleDrawer()) }

如果有人使用抽屉式导航V5,我建议您使用它!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...