【发布时间】:2019-07-11 03:31:51
【问题描述】:
我正在尝试将它与 react-navigation 一起使用,但我不断得到:
fontFamily 'Feather' 不是系统字体,尚未加载 通过 Expo.Font.loadAsync
我在加载组件中使用了 Font.loadAsync() 方法,但错误不断出现。实际上,我最终从我的应用程序中删除了所有矢量图标以开始清理。
所以我的问题是我是否有一个切换导航器,它以加载屏幕开始(这会启动身份验证检查)并切换到登录屏幕或包含我的应用程序内容的根选项卡容器。我似乎无法弄清楚在哪里调用 Font.loadAsync()
这是我的 MainNavigator.js
export default createBottomTabNavigator(
{
Friends: FriendsList,
Profile: Profile,
Settings: Settings
},
{
defaultNavigationOptions: ({navigation}) => ({
tabBarIcon: ({tintColor}) => {
const {routeName} = navigation.state;
let iconName;
if (routeName == "Friends") {
iconName = "users"
} else if (routeName == "Profile") {
iconName = "user"
} else if (routeName == "Settings") {
iconName = "settings"
}
return <Feather name={iconName} size={20} color={tintColor} />
}
}),
tabBarOptions: {
style: {
backgroundColor: "#fff"
},
inactiveTintColor: "#999",
activeTintColor: TERTIARY_COLOR
}
}
)
App.js
// Screens for Switch Navigator
import AuthScreens from "./components/screens/AuthScreens";
import LoadingScreen from "./components/screens/Loading";
import MainNavigator from "./MainNavigator";
const AppContainer = createAppContainer(createSwitchNavigator(
{
LoadingScreen,
AuthScreens,
MainNavigator
},
{
initialRouteName: "LoadingScreen"
}
))
载入画面
export default class LoadingScreen extends Component {
async componentDidMount() {
try{
await Font.loadAsync({
FeatherFont
})
firebase.auth().onAuthStateChanged(user => {
this.props.navigation.navigate(user ? "MainContainer" : "LoginScreen")
})
} catch(error) {
alert(error)
}
}
render() {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center"}}>
<ActivityIndicator/>
</View>
)
}
}
【问题讨论】:
标签: react-native expo