开发者问题收集

(0,_reactNavigation.DrawerNavigator) 不是一个函数

2019-09-11
6492

我是 React Native 的新手。 我想创建简单的抽屉导航,但这里出现错误。

我已经安装了 React 导航。 这是代码:

import React, { Component } from 'react';

import {
StyleSheet,
Text,
View,
StatusBar ,
TouchableOpacity
} from 'react-native';

import { DrawerNavigator } from 'react-navigation';

import Screen1 from './Screen1';
import Screen2 from './Screen2'; 

const Drawer= DrawerNavigator({
    Home:{
        screen: Screen1
    },
    Home2:{
        screen: Screen2
    }
})

export default Drawer

我希望屏幕包含抽屉导航器。

但我收到错误:

(0,_reactNavigation.DrawerNavigator) is not a function

2个回答

它不是 DrawerNavigation 而是 createDrawerNavigation

如果您使用的是 react-navigation > V.4,这些功能已被移至另一个 repo。在您的情况下, createDrawerNavigator 位于 react-navigation-drawer 中,因此您需要安装它(通过使用 npmyarn )。

之后,当您导入它时,您只需执行以下操作:

import { createDrawerNavigator } from 'react-navigation-drawer';

然后像您已经在做的那样使用它。

如果您使用的是 react-navigation 版本 2 或 3,则

import { createDrawerNavigator } from 'react-navigation';

无需安装任何其他库。

DrawerNavigatorreact-navigation 版本 1 中使用。

Auticcat
2019-09-11

以下是设置反应导航所需遵循的一些步骤:

1)在根文件中导入抽屉导航器:

import { createSwitchNavigator, createDrawerNavigator, createAppContainer } from "react-navigation";

2)然后创建抽屉导航:

const AppDrawerNavigator = createDrawerNavigator({
    Home: {
        screen: Home
    },
    MyOrders: {
        screen: MyOrders
    },
});

3)在堆栈导航器或切换导航器中调用抽屉导航器,我的是切换导航器:

const AppSwitchNavigator = createSwitchNavigator({
    InitialScreen: {
        screen: InitialScreen
    },
    Login: {
        screen: Login
    },
    Forgot: {
        screen: Forgot
    },
    SuccessMessage: {
        screen: SuccessMessage
    },
    Drawer: AppDrawerNavigator,
}, {
  initialRouteName: 'InitialScreen',
  headerMode: 'none',
  navigationOptions: {
    gesturesEnabled: false,
    header:null
  }
});

4)在任何地方导入:

import { DrawerActions } from "react-navigation";

并使用菜单图标调用它,如

onPress={() => this.props.navigation.dispatch(DrawerActions.openDrawer())}

这将打开您的抽屉导航器,如果您需要任何帮助,请告诉我。

Rahul Mishra
2019-09-11