React Native 导航抽屉未打开,未找到切换抽屉

mnemlml8  于 2023-11-21  发布在  React
关注(0)|答案(2)|浏览(142)

尝试使用React-Navigation创建抽屉。
使用React Native 0.59,安装R eact-Navigation 3.x,已经完成了react-native link react-native-gesture-handler的链接。
使用React-Navigation创建路由,称为Route.js:

const Drawer = createDrawerNavigator(
  {
    Settings: {
      screen: HomeScene,
      navigationOptions: {
        title: 'Home',
        drawerIcon: () => (
          <Icon name="home" style={{ color: colors.white, fontSize: 24 }} type="Ionicons" />
        )
      }
    }
  },
  {
    contentComponent: props => <GlobalSideMenu {...props} />
  }
);

const AppNavigator = createStackNavigator(
  {
    Home: {
      screen: HomeScene,
      navigationOptions: {
        header: null
      }
    },
    Drawer: {
      screen: Drawer,
      navigationOptions: {
        header: null
      }
    }
  },
  {
    initialRouteName: 'Home'
  }
);

export default createAppContainer(AppNavigator);

字符串
然后在页眉中,抽屉图标:

<Button icon transparent onPress={() => this.props.navigation.toggleDrawer()}>
      <Icon name={icon('menu')} type="Ionicons" style={styles.menuColor} />
 </Button>


它给了我错误:toggleDrawer()是未定义的。
然后我将其改为:

this.props.navigation.dispatch(DrawerActions.toggleDrawer());


现在,没有错误,但抽屉没有打开。

ajsxfq5m

ajsxfq5m1#

如果您试图从抽屉导航器的屏幕集之外打开抽屉,通常会出现这种情况。
this.props.navigation.toggleDrawer只有在Settings中才定义,我猜不是这样的。
您可以重新安排导航,以便抽屉出现在您调用toggleDrawer的屏幕上,或者您可以首先导航到Settings

<Button
  icon 
  transparent 
  onPress={() => {
    this.props.navigation.navigate('Settings');
    this.props.navigation.dispatch(DrawerActions.openDrawer());
  }}
>
  <Icon name={icon('menu')} type="Ionicons" style={styles.menuColor} />
</Button>

字符串
Here is an example澄清。

vktxenjb

vktxenjb2#

首先从“@react-navigation/native”导入导入{ DrawerActions};然后您可以像一样使用它

<Button icon transparent 
  onPress={() =>this.props.navigation.dispatch(DrawerActions.openDrawer())}>
     <Icon name={icon('menu')} type="Ionicons" style={styles.menuColor} />  </Button>


<Button icon transparent 
  onPress={() =>this.props.navigation.dispatch(DrawerActions.closeDrawer())}>
     <Icon name={icon('menu')} type="Ionicons" style={styles.menuColor} />  </Button>

字符串

相关问题