无法在本机反应中解析@ react-navigation / drawer以创建抽屉导航

时间:2020-02-19 17:23:17

标签: react-native react-navigation-drawer

我正在尝试创建新的抽屉导航,但出现以下错误

Unable to resolve "react-native-screens" from "node_modules\@react-navigation\drawer\src\views\DrawerView.tsx"
Failed building JavaScript bundle.

但是我在新的空项目中尝试过的相同代码在旧版本的“ react-navigation”中使用了react-native-drawer:“ ^ 2.6.2”,但在“ react-navigation”中却不起作用:“ ^ 4.0.10“,它表明react-native-drawer已删除,并且@ react-native / drawer是最新的,因此我们需要使用它,但是它不能正常工作,可以帮助我解决此问题...代码在下面

import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createDrawerNavigator } from '@react-navigation/drawer';

function Feed() {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Feed Screen</Text>
    </View>
  );
}

function Article() {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Article Screen</Text>
    </View>
  );
}

const Drawer = createDrawerNavigator();

function MyDrawer() {
  return (
    <Drawer.Navigator>
      <Drawer.Screen name="Feed" component={Feed} />
      <Drawer.Screen name="Article" component={Article} />
    </Drawer.Navigator>
  );
}

export default function DrawerNavigator() {
  return (
    <NavigationContainer>
      <MyDrawer />
    </NavigationContainer>
  );
}

3 个答案:

答案 0 :(得分:0)

是的!这是个老问题,但我想回答这个问题。但是,我们知道React Native软件包会根据版本更新而有所不同。如果您使用的是(版本)V5x,请执行以下步骤。我确定它可以正常工作。

  1. npm install --save react-navigation-drawer(安装软件包)
  2. import { createDrawerNavigator } from 'react-navigation-drawer';(使用“ react-navigation-drawer”导入导航器)

答案 1 :(得分:0)

npm install @react-navigation/drawer

npm install @react-navigation/drawer

要使用此抽屉导航器,请从@react-navigation/drawer 导入:

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

答案 2 :(得分:-1)

我知道这不是一个正确的解决方案,但是无论如何它对我有用...

我们可以使用@pact代替@ react-navigation / drawer

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

这有效,我在下面粘贴了我的工作代码

在ReactNative更新中,他们将createDrawerNavigator和DrawerItems从react-navigation移到react-navigation-drawer ...

import React from 'react';
import { StyleSheet, Text, View, SafeAreaView, ScrollView,Dimensions,Image } from 'react-native';

import { createAppContainer} from 'react-navigation';
import {createStackNavigator} from 'react-navigation-stack';
import { createDrawerNavigator,DrawerItems} from 'react-navigation-drawer';

import Login from '../screens/Login';
import Home from '../screens/Home';



const CustomDrawComponent=(props) => (
    <SafeAreaView style={{flex:1}}>
        <View style={{paddingTop:45, backgroundColor:'green'}}>
      <View style={{height:150,alignItems:'center', justifyContent:'center'}}>
        <Image source={require('../assets/Logos/userPic.png')} 
                style={{height:120,width:120,borderRadius:60}} />
      </View>
      </View>
      <ScrollView>
        <DrawerItems {...props}/>
      </ScrollView>
      <Text style={{paddingBottom:100, paddingLeft:65}}>Vision Cultura V1.0</Text>
    </SafeAreaView>
  )
const screens = createDrawerNavigator({
    Main: {
            screen: createStackNavigator({
            Home: {screen: Home},
            Login: {screen: Login},
            
        }, {initialRouteName: "Login"})
    },
    Home: Home,
    Login: Login

},
{
    contentComponent:CustomDrawComponent
});

const index = createAppContainer(screens);
export default index;