【问题标题】:TypeError: (0, _native.createNavigatorFactory) is not a functionTypeError: (0, _native.createNavigatorFactory) 不是函数
【发布时间】:2021-04-19 05:41:20
【问题描述】:

我不明白问题出在哪里,我首先使用的是 react-native-drawer v4,但在我尝试使用 '@react-navigation/drawer' v5 但它不起作用之后。有人可以帮助我解决我正在做的错误。 我正在为 react-native 应用程序使用 expo-CLI。

继续使用 v5 的原因我觉得添加自定义按钮或选项很容易,因为我没有找到在 v4 中添加自定义抽屉选项的人。

import React from 'react';
// import { createDrawerNavigator,   DrawerContentScrollView,  DrawerItemList, DrawerItem, } from 'react-navigation-drawer';
import {createDrawerNavigator,DrawerContentScrollView,DrawerItemList,    DrawerItem,} from '@react-navigation/drawer';



const AuthNavigation = createDrawerNavigator({
    Login:{screen:Login},
});
function CustomDrawerContent(props) {
    return (
      <DrawerContentScrollView {...props}>
        <DrawerItemList {...props} />
        <DrawerItem label="logout" onPress={() => alert('Link to help')} />
      </DrawerContentScrollView>
    );
  }
  
  const Drawer = createDrawerNavigator();
  
  function MyDrawer() {
    return (
      <Drawer.Navigator drawerContent={props => <CustomDrawerContent {...props} />}>
        <Drawer.Screen name="Users" component={AllUsers} />
        <Drawer.Screen name="Data" component={AllData} />
        <Drawer.Screen name="Add User" component={AddUser} />
        <Drawer.Screen name="Uploader" component={UploadFile} />
      </Drawer.Navigator>
    );
  }

// const AppNavigation = createDrawerNavigator({
//     Add_User:{
//         screen: AddUser,
//         navigationOptions:{
//             drawerLabel: 'Add User',
//         }
//     },
//     Data:{screen: AllData},
//     Users:{screen: AllUsers},
//     Uploader:{screen: UploadFile},
    
 
// })
const AuthLoadScreen = ({navigation}) =>{
    const _loadData= async ()=>{
        const isLoggedIn = await AsyncStorage.getItem('isLoggedIn'); 
        navigation.navigate(isLoggedIn !== '1' ? 'Auth':'App' );
    }
    _loadData();
    return(
       <View>
        <ActivityIndicator/>
        <StatusBar barStyle="default" />
       </View>
    );
}


export default createAppContainer(createSwitchNavigator(
    {
        AuthLoading:AuthLoadScreen,
        App:MyDrawer,
        Auth:AuthNavigation
    },{
        initialRouteName: 'AuthLoading'
    }
));


【问题讨论】:

  • 您正在混合使用导航 4 和 5,如果您使用 V5,则应使用导航容器

标签: android reactjs react-native react-native-navigation mobile-development


【解决方案1】:

面对同样的错误。解决了。试试这个:

npm install @react-navigation/native

yarn add @react-navigation/native@next

yarn add @react-navigation/native

文档:https://reactnavigation.org/docs/getting-started/

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 2022-01-08
    • 2021-06-30
    • 2020-08-04
    • 2022-01-22
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多