You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native配置自定义字体时出现渲染错误求助

解决React Native(Expo)自定义字体配置的渲染错误

这个错误的核心原因是AppLoading组件未正确导入或不存在。从Expo SDK 44开始,expo-app-loading已被官方弃用,默认Expo项目不再包含这个包,直接导入会得到undefined,导致渲染失败。

解决方案1:使用官方推荐的expo-splash-screen(优先选择)

  1. 安装依赖:
npx expo install expo-splash-screen
  1. 修改代码,用expo-splash-screen的API替代AppLoading:
import { StatusBar } from 'expo-status-bar';
import Home from './screens/home';
import * as Font from 'expo-font';
import React, { useState, useEffect } from 'react';
import * as SplashScreen from 'expo-splash-screen';

// 防止启动屏自动隐藏
SplashScreen.preventAutoHideAsync();

const getFonts = () => Font.loadAsync({
  'montserrat-regular': require('./assets/fonts/Montserrat-Regular.ttf'),
  'montserrat-medium': require('./assets/fonts/Montserrat-Medium.ttf'),
  'wreath': require('./assets/fonts/insigne - Wreath Halftone Medium.otf'),
});

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

  useEffect(() => {
    async function prepare() {
      try {
        await getFonts();
      } catch (e) {
        console.warn(e);
      } finally {
        setFontsLoaded(true);
        // 字体加载完成后隐藏启动屏
        await SplashScreen.hideAsync();
      }
    }

    prepare();
  }, []);

  if (!fontsLoaded) {
    return null;
  }

  return <Home />;
}

解决方案2:继续使用expo-app-loading(不推荐,仅兼容旧版本)

如果坚持要用AppLoading,需要先安装对应的包:

npx expo install expo-app-loading

确认安装完成后,原代码的导入和使用即可正常工作,但注意这个包已被官方标记为弃用,后续可能不再维护。

额外检查项

  • 确认字体文件路径正确,没有拼写错误
  • 确保Home组件正确导出和导入(移除字体代码后能正常运行说明该组件本身无问题)

内容的提问来源于stack exchange,提问作者user21135338

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:16:56