【问题标题】:React Native - Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/functionReact Native - 警告:React.createElement:类型无效 - 需要一个字符串(用于内置组件)或类/函数
【发布时间】:2021-11-17 06:59:58
【问题描述】:

我正在学习本机反应,我正在导入一个 AppLoading 以使用自定义字体我得到了这个错误:

警告:React.createElement:类型无效 - 应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

我的 app.js

import React, { useState } from 'react';
import * as Font from 'expo-font';
import Home from './screens/Home';
import { AppLoading } from 'expo-app-loading';

const getFonts = () =>
  Font.loadAsync({
    'nunito-regular': require('./assets/Fonts/Nunito-Regular.ttf'),
    'nunito-bold': require('./assets/Fonts/Nunito-Bold.ttf'),
  });

export default function App() {
  const [fontsLoaded, setFontsLoaded] = useState(false);

  if (fontsLoaded) {
    return <Home />;
  } else {
    return <AppLoading startAsync={getFonts} onFinish={() => setFontsLoaded} />;
  }
}

我的 Home.js

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

export default function Home() {
  return (
    <View style={styles.container}>
      <Text style={styles.titleText}>Home Screen</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    padding: 24,
  },

  titleText: {
    fontFamily: 'nunito-bold',
    fontSize: 18,
  },
});

【问题讨论】:

    标签: javascript reactjs react-native mobile


    【解决方案1】:

    或者您可能混淆了默认导入和命名导入。

    这就是问题所在。

    你导入这个:

    import { AppLoading } from "expo-app-loading";
    

    The docs say 导入这个:

    import AppLoading from 'expo-app-loading';
    

    【讨论】:

    • 它有效,但现在出现错误,但我看不到日志,我只知道由于 OnLoading 的 onError 属性而出现错误
    • 在那条评论之后我改变了一些东西,它正在工作
    猜你喜欢
    • 2018-08-02
    • 2022-01-25
    • 2017-11-29
    • 2022-12-12
    • 2018-11-09
    • 1970-01-01
    • 2020-09-04
    • 2017-08-30
    • 2018-01-18
    相关资源
    最近更新 更多