我目前正在为我的项目使用Expo和React-Navigation。当我使用React-Navigation和Expo时,我很难找到并在我的项目中实现自定义字体的解决方案。
以下是Expo实施自定义字体的方法:https://docs.expo.io/versions/v15.0.0/guides/using-custom-fonts.html
Expo提供了一种从资源文件夹加载字体的异步方法,这需要将这几行代码添加到我的顶级组件定义的任何位置的componentDidMount()中:
(从先前放置的链接复制)
componentDidMount() {
Font.loadAsync({
'open-sans-bold': require('./assets/fonts/OpenSans-Bold.ttf'),
});
}
理论上,我可以在我的应用程序的每个页面中实现它,但这会导致我的应用程序加载速度变慢。理想情况下,我只想在我的顶级组件中实现Expo的步骤一次(在此解释:Using custom Font in react native with expo, loading font every time),因为在应用程序的每个组件中实现此解决方案会导致加载速度变慢。 / p>
在我的App.js中,我导出导航器而不是包含componentDidMount()函数调用的组件。这就是我现在的App.js的样子。
export default SimpleApp = DrawerNavigator({
Login: {
screen: SomeComponent,
navigationOptions: {
acceptPan: false,
},
},
MainTabs: {
screen: SomeTabNavigator,
navigationOptions: {
tabBarPosition:'top',
headerLeft: null
}
}
});
在这里,我导出一个DrawerNavigator,它不是一个组件。所以现在,我实际上甚至没有一个顶级组件。重申一下,我想让我的App.js导出一些保留导航的顶级组件,并允许我实现Expo的导入自定义字体的步骤。
谢谢!
答案 0 :(得分:2)
在尝试为我的应用程序实现自定义状态栏时,我无意中偶然发现了答案。这是我找到解决方案的链接(请参阅ezzak的回复)。
https://github.com/react-community/react-navigation/issues/1441
基本上,您实际上可以将导航器视为组件!
不要忘记将所有课程组成部分的第一个字母大写。