Javascript React Native:在应用程序启动时预取数据的最佳方式
我对react native还不熟悉,我的应用程序在做了2次异步调用后显示了不同的位置(第一次是获取用户坐标,第二次是获取用户坐标周围的位置) 这些异步axios调用通常需要几秒钟的时间,因此我的应用程序的第一个屏幕显示为空白,一旦承诺得到解决并更新状态,就会出现位置列表。 我在App.js主组件的useEffect中进行api调用 我的问题是:有没有更好的方法在应用程序启动时预取数据,以避免在状态更新之前显示空白屏幕(不是很专业的哈…) App.jsJavascript React Native:在应用程序启动时预取数据的最佳方式,javascript,reactjs,react-native,native,Javascript,Reactjs,React Native,Native,我对react native还不熟悉,我的应用程序在做了2次异步调用后显示了不同的位置(第一次是获取用户坐标,第二次是获取用户坐标周围的位置) 这些异步axios调用通常需要几秒钟的时间,因此我的应用程序的第一个屏幕显示为空白,一旦承诺得到解决并更新状态,就会出现位置列表。 我在App.js主组件的useEffect中进行api调用 我的问题是:有没有更好的方法在应用程序启动时预取数据,以避免在状态更新之前显示空白屏幕(不是很专业的哈…) App.js function App() {
function App()
{
useEffect(() =>
{
console.log('App mounted');
//Async calls, takes a few seconds and blank screen shows while the promises resolve
getCurrentCoordinates();
getLoggedUser();
}, [])
const getCurrentCoordinates = async () => {
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(async(position) =>
{
let myCoordinates = { lat:position.coords.latitude, lng:position.coords.longitude };
mapStore.setCurrentCoordinates(myCoordinates);
let params =
{
latlng : myCoordinates.lat+','+myCoordinates.lng,
sensor : true,
key : env.MAPS_KEY
};
let response = await http.get('https://maps.googleapis.com/maps/api/geocode/json?', { params :params });
fetchMarkersFromLocation(myCoordinates);
},
(error) => console.log(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
}
};
return (
<SafeAreaView style={[ global.androidSafeArea ]}>
<NavigationContainer>
<ROOTSTACK1></ROOTSTACK1>
</NavigationContainer>
</SafeAreaView>
);
}
export default App;
函数应用程序()
{
useffect(()=>
{
console.log('App-mounted');
//异步调用,需要几秒钟的时间,并在承诺解决时显示空白屏幕
getCurrentCoordinates();
getLoggedUser();
}, [])
常量getCurrentCoordinates=async()=>{
if(导航器.地理位置)
{
navigator.geolocation.getCurrentPosition(异步(位置)=>
{
设myCoordinates={lat:position.coords.lation,lng:position.coords.longitude};
mapStore.setCurrentCoordinates(坐标);
让params=
{
latlng:myCoordinates.lat+','+myCoordinates.lng,
传感器:对,
关键字:env.MAPS\u关键字
};
let response=等待http.get('https://maps.googleapis.com/maps/api/geocode/json?“,{params:params});
从位置获取标记(坐标);
},
(错误)=>console.log(错误消息),
{enableHighAccurance:true,超时:20000,最大值:1000}
);
}
};
返回(
);
}
导出默认应用程序;
<>代码>你介意用一个飞溅屏幕代替空白屏幕吗?