Expo AppLoading和app bootstrap数据?

时间:2017-11-08 16:28:35

标签: react-native expo

有一个新组件<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适合这种需要,你将如何处理用户启动应用程序而没有连接,并且引导数据承诺拒绝的情况?你如何处理重试尝试?

0 个答案:

没有答案