React Native 预加载本地图片
React Native preload local images
如何在 React Native 中渲染之前加载图像
我用地图
我使用自定义图像作为标记。
我想在加载地图之前(或渲染之前)加载标记图像
RN Image组件处理这种情况的具体静态方法:https://facebook.github.io/react-native/docs/image.html#prefetch
注意:Image.prefetch
returns一个承诺
下面是一个示例,说明如何在不使用 Redux 的情况下使用 React Native Router Flux (RNRF) 实现此功能:
let urlOfImages = [https://...]
let preFetchTasks = [];
urlOfImages.forEach((p)=>{
preFetchTasks.push(Image.prefetch(p));
});
Promise.all(preFetchTasks).then((results)=>{
let downloadedAll = true;
results.forEach((result)=>{
if(!result){
//error occurred downloading a pic
downloadedAll = false;
}
})
if(downloadedAll){
Actions.someScene({ downloadedPics: urlOfImages})
}
})
然后在您的 someScene 组件中像往常一样使用图像组件,图像将从本地磁盘缓存中获取,而不是从远程获取:
<Image style={...} source={{uri: this.props.urlOfImages[0]}} />
另外请注意,如果您尝试从 http 而不是安全的 https 端点加载图像,您将会遇到问题:https://github.com/facebook/react-native/issues/8520
如果您想将它与 Redux 一起使用,请将上面的代码放在一个 Action 中,并确保您的 reducer 响应该操作并根据您的应用程序要求设置新状态。
资源:
如何在 React Native 中渲染之前加载图像
我用地图
我使用自定义图像作为标记。
我想在加载地图之前(或渲染之前)加载标记图像
RN Image组件处理这种情况的具体静态方法:https://facebook.github.io/react-native/docs/image.html#prefetch
注意:Image.prefetch
returns一个承诺
下面是一个示例,说明如何在不使用 Redux 的情况下使用 React Native Router Flux (RNRF) 实现此功能:
let urlOfImages = [https://...]
let preFetchTasks = [];
urlOfImages.forEach((p)=>{
preFetchTasks.push(Image.prefetch(p));
});
Promise.all(preFetchTasks).then((results)=>{
let downloadedAll = true;
results.forEach((result)=>{
if(!result){
//error occurred downloading a pic
downloadedAll = false;
}
})
if(downloadedAll){
Actions.someScene({ downloadedPics: urlOfImages})
}
})
然后在您的 someScene 组件中像往常一样使用图像组件,图像将从本地磁盘缓存中获取,而不是从远程获取:
<Image style={...} source={{uri: this.props.urlOfImages[0]}} />
另外请注意,如果您尝试从 http 而不是安全的 https 端点加载图像,您将会遇到问题:https://github.com/facebook/react-native/issues/8520
如果您想将它与 Redux 一起使用,请将上面的代码放在一个 Action 中,并确保您的 reducer 响应该操作并根据您的应用程序要求设置新状态。
资源: