React Native配置自定义字体时出现渲染错误求助
解决React Native(Expo)自定义字体配置的渲染错误
这个错误的核心原因是AppLoading组件未正确导入或不存在。从Expo SDK 44开始,expo-app-loading已被官方弃用,默认Expo项目不再包含这个包,直接导入会得到undefined,导致渲染失败。
解决方案1:使用官方推荐的expo-splash-screen(优先选择)
- 安装依赖:
npx expo install expo-splash-screen
- 修改代码,用
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
相关产品推荐
相关产品推荐

