react-native - 我正在尝试使用 AppLoading 来呈现主屏幕组件,但在加载所有内容之前无法让初始屏幕保持不变
问题描述
在优化我的图像后,我意识到我仍然需要更多时间来加载我的组件。它们是带有图像的卡片状组件。
我有 2 个要加载的组件,一个在 flatList 中,另一个只是一个基本的卡片式组件,每个组件都包含图像。我一直在徒劳地试图让它发挥作用,并且不得不询问是否有人有一个好的解决方案。这是我到目前为止所拥有的。
import React, { useState } from "react";
import { View, StyleSheet } from "react-native";
import AppLoading from "expo-app-loading";
import Header from "./components/Header";
import HomeScreen from "./screens/HomeScreen";
const fetchHomeScreen = () => {
return HomeScreen.loadAsync({
HomeScreen: require("./screens/HomeScreen"),
Header: require("./components/Header"),
});
};
export default function App() {
const [HomeScreenLoaded, setHomeScreenLoaded] = useState(false);
if (!HomeScreenLoaded) {
return (
<AppLoading
startAsync={fetchHomeScreen}
onFinish={() => setHomeScreenLoaded(true)}
onError={(err) => console.log(err)}
/>
);
}
return (
<View style={styles.screen}>
<Header title="Your Beast Log" />
<HomeScreen />
</View>
);
}
const styles = StyleSheet.create({
screen: {
flex: 1,
backgroundColor: "#3E3636",
},
});
解决方案
您在使用博览会状态栏吗?然后试试这些;导入启动画面
import * as SplashScreen from 'expo-splash-screen';
将此添加到 main 函数的顶部
SplashScreen.preventAutoHideAsync()
export default function App() {....}
然后将此添加到您隐藏启动画面的屏幕中
const [appIsReady, setAppIsReady] = useState(false);
useEffect(() => {
if(appIsready) {
(async () => {
await SplashScreen.hideAsync();
})()
}
},[appIsReady])
async function prepare() {
try {
await fetchHomeScreen;
//OR
await HomeScreen.loadAsync({
HomeScreen: require("./screens/HomeScreen"),
Header: require("./components/Header"),
});
} catch (e) {
console.warn(e);
} finally {
// Tell the application to render
setAppIsReady(true);
}
}
推荐阅读
- angular - 如何从 Angular 8 的资产文件夹中设置背景图像?
- javascript - ReactJS:React-Month-Picker 错误:函数组件不能有引用。你的意思是使用 React.forwardRef() 吗?
- javascript - Jest 中的 module.export 单元测试问题
- arduino - 电机护罩未按预期移动
- reactjs - React useState 空数组类型
- android - 使用 Talkback 替换后 Fragment 的视图没有获得焦点
- android - 应为 BEGIN_ARRAY,但在第 1 行第 1 列路径 $ ....z 处为 STRING
- javascript - html canvas ctx.fillRect() 到鼠标位置
- swiftui - 当我将tableview放入scrollview并且tableview滚动被禁用时,ScrollView表现得很奇怪
- python-3.x - 名称:价格,数据类型:int64)' 是无效键