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

React Native自定义字体无法生效,请求排查操作错误原因

自定义字体未生效的排查与解决方案

看起来你已经走了正确的流程,但还是有几个容易踩坑的点,我帮你逐一梳理:

1. 字体文件名与代码引用必须完全匹配

这是最常见的问题!你代码里写的fontFamily: 'Poppins-Regular',必须和assets/fonts里的字体文件名(不含后缀)完全一致,包括大小写。比如如果你的字体文件是poppins-regular.ttf,那代码里也要写全小写的poppins-regular,大小写不匹配会直接导致字体加载失败。

2. 确认react-native-asset执行成功

执行npx react-native-asset后,检查终端有没有报错信息:

  • 对于iOS:查看ios/[你的项目名]/Info.plist,里面应该自动添加了类似UIAppFonts的数组,包含你的字体文件名
  • 对于Android:检查android/app/src/main/assets/fonts文件夹,里面应该有复制过去的字体文件
    如果这两步没自动完成,可能是react-native.config.js的路径配置有误,确认./assets/fonts是相对于项目根目录的正确路径。

3. 必须清除缓存并重启服务

字体添加后,Metro的缓存会导致新字体不生效,一定要:

  1. 关闭当前的Metro服务(按Ctrl+C)
  2. 执行npx react-native start --reset-cache重启服务
  3. 重新运行应用(npx react-native run-ios 或 npx react-native run-android)

4. 字体字重的冲突问题

看你balance样式里设置了fontWeight: 800,但你引用的是Poppins-Regular(常规字重)。自定义字体的fontWeight设置是无效的——如果你需要粗体,必须引入对应字重的字体文件(比如Poppins-ExtraBold.ttf),然后把fontFamily改成Poppins-ExtraBold,而不是靠设置fontWeight来实现。否则系统会 fallback 到默认字体,让你误以为自定义字体没生效。

额外提示:代码里的<img>标签错误

React Native中没有<img>标签,你需要替换成官方的Image组件,比如:

// 错误写法
<img style={styles.image} src={require('../assets/user4.png')}/>

// 正确写法
<Image style={styles.image} source={require('../assets/user4.png')} />

这个错误会导致组件渲染异常,虽然和字体无关,但也会影响页面显示,建议一并修正。

内容的提问来源于stack exchange,提问作者S I A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:07:31