首页 > 解决方案 > 我不明白如何使用它或它做什么,_loadResourcesAsync 来自 react native expo default project with screen

问题描述

在您使用 Expo 时 react-native 生成​​的默认项目的 App.js 中(具有不同屏幕的项目)。

好吧,在 App.js 中。

  render() {
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
  return (
    <AppLoading
      startAsync={this._loadResourcesAsync}
      onError={this._handleLoadingError}
      onFinish={this._handleFinishLoading}
    />
  );
} else {
  return (
    <View style={styles.container}>
      {Platform.OS === 'ios' && <StatusBar barStyle="default" />}
    {/* <Text>{User.nom}</Text> */}
    <AppNavigator  style={styles.container} />
    </View>
  );
}
}
     _loadResourcesAsync = async () => {
        return Promise.all([
          Asset.loadAsync([
            require('./assets/images/icon_llaurar.jpg'),
            require('./assets/images/icon_podar.jpg'),
            require('./assets/images/icon_ensofatar.jpg'),
          ]),
          Font.loadAsync({
            // This is the font that we are using for our tab bar
            ...Icon.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'),
          }),
        ]);
      };

我真的不明白它的作用,或者如何使用加载的资产。我仍然必须导入所有屏幕上的每个资产才能使用它,所以我不知道如何处理它或它做了什么。

另外,有人可以解释一下 ...Icon.Ionicons.font 这行是做什么的吗?前面的三个点是什么?

提前致谢

标签: javascriptreact-nativeasynchronousexpo

解决方案


第一件事第一件事:来自文档AppLoading “(...)React 组件,它告诉 Expo 如果它是您的应用程序中呈现的第一个也是唯一一个组件,则保持应用程序加载屏幕打开。” .

关于资产缓存,您还可以阅读Preloading & Caching Assets的 expo 文档。Asset.loadAsync 会将每个资产数据下载到设备缓存目录中的本地文件中。

关于您提到的 ...,这是Destructuring Assignment的 JavaScript 表达式,它可以将数组中的值或对象中的属性解压缩到不同的变量中。换句话说,可以理解 Icon.Ionicons.font 是一个数组或对象,在这种情况下,它的所有项目都将作为作为参数传递给 Font.loadAsync() 的对象的直接属性传播。


推荐阅读