使图像在render()之前加载

时间:2019-03-04 10:09:08

标签: javascript react-native react-navigation

我使用RNFetchBlob下载图像,视频,徽标和pdf。如果存在视频,则使用视频;如果不存在视频,但使用背景,则使用背景。

当我的应用程序位于我的 Configuring.js 中时,这将异步下载所有资产并设置我的应用程序。

这是我用来将资产保存到窗口/全局变量的代码,以便在应用程序的所有屏幕上调用。

let dirs = RNFetchBlob.fs.dirs;
RNFetchBlob.fs.ls(dirs.DocumentDir)
        .then( (files) => {
          for(var i = 0; i < files.length; i++) {
            let fileName = files[i].split('.');

            if(fileName[0] === 'background') {
              window.local_background = dirs.DocumentDir + '/' + files[i];
              continue;
            }

            if(fileName[0] === 'video') {
              window.local_video = dirs.DocumentDir + '/' + files[i];
              continue;
            }

            if(fileName[0] === 'logo') {
              window.local_logo = dirs.DocumentDir + '/' + files[i];
              continue;
            }
          }

          this.props.navigation.replace('Main');
        })

当我使用react-navigation在屏幕之间导航时,我使用了通用的<Image/>组件,其中的源设置为source={{uri: window.local_background}},但是我的问题是,当我浏览屏幕时,我导航到堆栈中还没有的新屏幕。如何加速/预加载它,以便在所有其他内容都已渲染之后就不开始加载?

是否有更好的方法在整个应用程序中使用全局背景?

我的背景 HAS 来自服务器,无法在应用程序的内部版本中本地存储。

1 个答案:

答案 0 :(得分:2)

React Native上的图像缓存不尽如人意。经过大量搜索,我发现使用from System.Collections.Generic import List import Autodesk.Revit.DB as DB doc=__revit__.ActiveUIDocument.Document uidoc=__revit__.ActiveUIDocument sheet_collector=DB.FilteredElementCollector(doc)\ .OfCategory(DB.BuiltInCategory\ .OST_Sheets)\ .WhereElementIsNotElementType()\ .ToElements() walls=DB.FilteredElementCollector(doc)\ .OfCategory(DB.BuiltInCategory.OST_Walls)\ .WhereElementIsNotElementType()\ .ToElements() tallwallsids=[] for wall in walls: heightp=wall.LookupParameter('Unconnected Height') if heightp and heightp.AsDouble()==10: tallwallsids.append(wall.Id) uidoc.Selection.SetElementIds(List[DB.ElementId](tallwallsids)) 非常适合图像缓存和显示从Web下载的图像。您可以找到仓库here

使用起来非常容易,它基本上替代了react-native-fast-image提供的Image组件。

设置非常简单(请注意,该软件包在Expo上不可用)

您可以通过以下方式安装

react-native

以下是使用它的示例:

# Install
yarn add react-native-fast-image
npm install react-native-fast-image

# Automatic linking. (other linking methods listed on their website)
react-native link react-native-fast-image

我基本上在需要从网络上加载任何图像时都使用它。