我有30个proyect,并且字体(fontello图标)现在可以成功加载3个月后,我重新打开proyect,直到更新expo和字体都没有加载,即使我创建了一个新的proyect字体也没有
(我已经从
import { Font } from 'expo';
至
import * as Font from 'expo-font';)
这是有问题https://snack.expo.io/@emmalv/bold-banana
很好奇,在expo-cli中,当我运行相同的代码并打印加载状态时,首先返回false,然后返回true,然后中间显示红色屏幕,表示尚未通过Font.loadAsync加载字体。
我尝试过写应用程序类中的所有内容,而不是从另一个文件加载字体,并且行为相同
我尝试过的另一件事就像新文档说的那样,使用expoAssetId
const expoAssetId = require("assets/fonts/custom-icon-font.ttf");
const Icon = createIconSetFromFontello(fontelloConfig, 'FontName', expoAssetId);
但我遇到另一个错误
C.replace is not a function. (In 'C.replace(/\.(otf|ttf)$/,'')', 'C.replace' is undefined)
预期行为 图标加载并正确显示 实际行为 加载时引发异常“ fontFamily“ ../assets/fonts/sowaicons”不是系统字体,并且尚未通过Font.loadAsync加载。并显示一个正方形而不是图标
环境
答案 0 :(得分:1)
我创建了工作示例: https://snack.expo.io/@djalik/custom-fonts
更改CustomIcon代码:
import { createIconSetFromFontello } from '@expo/vector-icons';
import fontelloConfig from '../assets/fonts/config.json';
// const ttf = require("../assets/fonts/sowaicons.ttf");
// import myfont from "../assets/fonts/sowaicons.ttf";
const Icon = createIconSetFromFontello(fontelloConfig, 'sowaicons');
并将this.state.setState ...替换为this.setState