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的缓存会导致新字体不生效,一定要:
- 关闭当前的Metro服务(按
Ctrl+C) - 执行
npx react-native start --reset-cache重启服务 - 重新运行应用(
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
相关产品推荐
相关产品推荐

