Javascript 字体未在IOS或Android上加载
上面说我可以使用Expo.Apploading,但我对此一无所知。如果有人能帮忙,那就太好了。这在我正在运行的任何一台设备中都会发生。下面是App.js的代码Javascript 字体未在IOS或Android上加载,javascript,react-native,Javascript,React Native,上面说我可以使用Expo.Apploading,但我对此一无所知。如果有人能帮忙,那就太好了。这在我正在运行的任何一台设备中都会发生。下面是App.js的代码 import React, {useState}from 'react'; import {Text, View } from 'react-native'; import *as Font from 'expo-font'; import {AppLoading} from 'expo'; import {enableScreens}
import React, {useState}from 'react';
import {Text, View } from 'react-native';
import *as Font from 'expo-font';
import {AppLoading} from 'expo';
import {enableScreens} from 'react-native-screens';
import EstesGuideNavigator from './navigation/EstesGuideNavigator';
enableScreens(); // useScreens has been changed to enableScreens - this helps screens load faster in background
const fetchFonts = () => { //fetching costum fonts for my app using Async
Font.loadAsync({
'raleway-blackItalic' : require('./assets/fonts/Raleway-BlackItalic.ttf'),
'raleway-bold' : require('./assets/fonts/Raleway-Bold.ttf'),
'raleway-regular' : require('./assets/fonts/Raleway-Regular.ttf'),
'raleway-thin' : require('./assets/fonts/Raleway-Thin.ttf')
});
};
export default function App() {
const [fontLoaded, setFontLoaded] = useState(false); //initially it's false because app hasn't been loaded
if (!fontLoaded) {
return(
<AppLoading
startAsync = {fetchFonts}
onFinish = {() => setFontLoaded(true) }
/> //if assets(fonts here) is not loaded we display loading screen and load assets for app
);
}
return <EstesGuideNavigator/>;
}
import React,{useState}来自“React”;
从“react native”导入{Text,View};
从“expo字体”导入*作为字体;
从“expo”导入{AppLoading};
从“react native screens”导入{enableScreens};
从“/navigation/EstesGuideNavigator”导入estsguidenavigator;
启用屏幕();//UseScreences已更改为enableScreens-这有助于在后台更快地加载屏幕
const fetchFonts=()=>{//使用异步为我的应用程序获取costum字体
Font.loadAsync({
“raleway blackItalic”:要求(“./assets/fonts/raleway blackItalic.ttf”),
“raleway bold”:要求(“./assets/font/raleway bold.ttf”),
“raleway regular”:要求(“./assets/font/raleway regular.ttf”),
“raleway thin”:需要(“./assets/fonts/raleway thin.ttf”)
});
};
导出默认函数App(){
const[fontLoaded,setFontLoaded]=useState(false);//最初为false,因为应用程序尚未加载
如果(!fontLoaded){
返回(
我不知道哪里出了问题,但这就是我处理字体加载的方式,效果非常好
import { AppLoading } from "expo";
import { Asset } from "expo-asset";
import * as Font from "expo-font";
import React, { useState } from "react";
import { Platform, StatusBar, StyleSheet, View } from "react-native";
import { Ionicons } from "@expo/vector-icons";
import AppNavigator from "./navigation/AppNavigator";
export default function App(props) {
const [isLoadingComplete, setLoadingComplete] = useState(false);
if (!isLoadingComplete && !props.skipLoadingScreen) {
return (
<AppLoading
startAsync={loadResourcesAsync}
onError={handleLoadingError}
onFinish={() => handleFinishLoading(setLoadingComplete)}
/>
);
} else {
return (
<View style={styles.container}>
{Platform.OS === "ios" && <StatusBar barStyle="default" />}
<AppNavigator />
</View>
);
}
}
async function loadResourcesAsync() {
await Promise.all([
Asset.loadAsync([
require("./assets/images/tick.png"),
require("./assets/images/error.png")
]),
Font.loadAsync({
// This is the font that we are using for our tab bar
...Ionicons.font,
// We include SpaceMono because we use it in HomeScreen.js. Feel free to
// remove this if you are not using it in your app
"space-mono": require("./assets/fonts/SpaceMono-Regular.ttf"),
"Gilroy-Bold": require("./assets/fonts/Gilroy-Bold.otf"),
"Gilroy-Medium": require("./assets/fonts/Gilroy-Medium.otf"),
"Gilroy-Heavy": require("./assets/fonts/Gilroy-Heavy.otf")
})
]);
}
function handleLoadingError(error) {
// In this case, you might want to report the error to your error reporting
// service, for example Sentry
console.warn(error);
}
function handleFinishLoading(setLoadingComplete) {
setLoadingComplete(true);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff"
}
});
从“expo”导入{AppLoading};
从“expo资产”导入{Asset};
从“expo字体”导入*作为字体;
从“React”导入React,{useState};
从“react native”导入{平台、状态栏、样式表、视图};
从“@expo/vector icons”导入{Ionicons}”;
从“/navigation/AppNavigator”导入AppNavigator;
导出默认功能应用程序(道具){
const[isLoadingComplete,setLoadingComplete]=useState(false);
如果(!isLoadingComplete&&!props.skipLoadingScreen){
返回(
handleFinishLoading(setLoadingComplete)}
/>
);
}否则{
返回(
{Platform.OS===“ios”&&}
);
}
}
异步函数loadResourcesAsync(){
等待承诺([
Asset.loadAsync([
要求(“./assets/images/tick.png”),
要求(“./assets/images/error.png”)
]),
Font.loadAsync({
//这是我们用于选项卡栏的字体
…Ionicons.font,
//我们包括SpaceMono,因为我们在HomeScreen.js中使用它
//如果未在应用程序中使用,请将其删除
“space mono”:要求(“./assets/fonts/SpaceMono Regular.ttf”),
“Gilroy Bold”:要求(“./assets/font/Gilroy Bold.otf”),
“Gilroy Medium”:要求(“./assets/font/Gilroy Medium.otf”),
“Gilroy Heavy”:要求(“/assets/font/Gilroy Heavy.otf”)
})
]);
}
函数handleLoadingError(错误){
//在这种情况下,您可能希望将错误报告给您的错误报告
//服务,例如哨兵
控制台。警告(错误);
}
功能手柄完成加载(设置加载完成){
设置加载完成(真);
}
const styles=StyleSheet.create({
容器:{
弹性:1,
背景颜色:“fff”
}
});