我在一个项目中使用UI Kitten库。
我创建了一个和一个文件,如下所示:React Native
Typescript
mapping.json
react-native.config.js
mapping.json
:{ "strict": { "text-font-family": "OpenSans-Regular", "text-heading-1-font-size": 30, "text-heading-1-font-weight": "800", "text-heading-1-font-family": "OpenSans-Bold", "text-subtitle-1-font-size": 15, "text-subtitle-1-font-weight": "600", "text-subtitle-1-font-family": "OpenSans-ExtraBoldItalic", "text-paragraph-1-font-size": 12, "text-paragraph-1-font-weight": "400", "text-paragraph-1-font-family": "OpenSans-Light", "text-caption-1-font-size": 12, "text-caption-1-font-weight": "400", "text-caption-1-font-family": "OpenSans-Regular", "text-label-font-size": 12, "text-label-font-weight": "800", "text-label-font-family": "OpenSans-SemiboldItalic" } }
react-native.config.js:
module.exports = { project: { ios: {}, android: {}, }, assets: ['./assets/fonts'], };
我的自定义字体位于assets/fonts
文件夹下,我已经执行了npx react-native link
命令。
如果我单击Dismiss
应用程序正常工作,我认为只有在应用程序启动时才加载字体。
我尝试在我的 中加载这样的字体App.tsx
,但没有帮助:
const App = (): JSX.Element => {
const [assetsLoaded, setAssetsLoaded] = useState(false);
useEffect(() => {
async function importFonts() {
await Font.loadAsync({
'openSans-bold': require('../assets/fonts/OpenSans-Bold.ttf'),
'openSans-bold-italic': require('../assets/fonts/OpenSans-BoldItalic.ttf'),
'openSans-extra-bold': require('../assets/fonts/OpenSans-ExtraBold.ttf'),
'openSans-extra-bold-italic': require('../assets/fonts/OpenSans-ExtraBoldItalic.ttf'),
'openSans-italic': require('../assets/fonts/OpenSans-Italic.ttf'),
'openSans-light': require('../assets/fonts/OpenSans-Light.ttf'),
'openSans-light-italic': require('../assets/fonts/OpenSans-LightItalic.ttf'),
'openSans-regular': require('../assets/fonts/OpenSans-Regular.ttf'),
'openSans-semi-bold': require('../assets/fonts/OpenSans-Semibold.ttf'),
'openSans-semi-bold-italic': require('../assets/fonts/OpenSans-SemiboldItalic.ttf'),
});
}
importFonts().catch((error) => {
console.error(error);
});
setAssetsLoaded(true);
}, []);
if (assetsLoaded) {
return (
<>
<IconRegistry icons={EvaIconsPack} />
<ApplicationProvider {...eva} theme={{ ...eva.light, ...theme }} customMapping={mapping}>
<NavigationContainer>
<TabNavigator />
</NavigationContainer>
</ApplicationProvider>
</>
);
}
return (
<ApplicationProvider {...eva} theme={{ ...eva.light, ...theme }}>
<Text>Loading</Text>
</ApplicationProvider>
);
};
我也得到了一个Property 'components' is missing in type ...
我customMapping={mapping}
不知道这是否与这个问题有关。
我已经查看了与此相关的所有 SO 问题和 github 问题,没有任何帮助。
我也跑了expo r -c
,删除node_modules
了又跑yarn install
了,没有任何帮助,我很迷茫。