有一个新组件<AppLoading/>
,可以在加载应用资源时让启动画面保持可见。
文档中的示例非常简单
https://docs.expo.io/versions/latest/sdk/app-loading.html
import React from 'react';
import { Image, Text, View } from 'react-native';
import { Asset, AppLoading } from 'expo';
export default class App extends React.Component {
state = {
isReady: false,
};
render() {
if (!this.state.isReady) {
return (
<AppLoading
startAsync={this._cacheResourcesAsync}
onFinish={() => this.setState({ isReady: true })}
onError={console.warn}
/>
);
}
return (
<View style={{ flex: 1 }}>
<Image source={require('./assets/images/expo-icon.png')} />
<Image source={require('./assets/images/slack-icon.png')} />
</View>
);
}
async _cacheResourcesAsync() {
const images = [
require('./assets/images/expo-icon.png'),
require('./assets/images/slack-icon.png'),
];
const cacheImages = images.map((image) => {
return Asset.fromModule(image).downloadAsync();
});
return Promise.all(cacheImages)
}
}
然而,这种组件是否用于处理可能失败的加载资源?
例如,如果我的应用程序需要有关经过身份验证的用户的引导数据(由后端提供),我应该使用此组件吗?
如果AppLoading适合这种需要,你将如何处理用户启动应用程序而没有连接,并且引导数据承诺拒绝的情况?你如何处理重试尝试?