我正在缓存一些图片,如:
Image.prefetch(`${remoteImageUrl}/100x100`)
Image.prefetch(`${remoteImageUrl}/800x800`)
Image.prefetch(`${remoteImageUrl}/1000x1000`)
当发生这种情况时,想要显示当前可用的最高分辨率版本的组件可能会呈现。
if 1000 cached use 1000,
elseif 800 cached use 800,
elseif 100 cached use 100
如何测试“1000是否被缓存”?
我尝试了 .complete ,没有运气。
if (Image.prefetch(`${remoteImageUrl}/1000x1000`).complete) {}
如何检查React Native中是否存在预取图像?
答案 0 :(得分:2)
使用开箱即用的API看起来不太可能。
首先,Image.prefetch
不包含与预取缓存相关的任何其他方法。
深入细节 - 在iOS上,Image.prefetch
调用原生RCTImageViewManager.prefetchImage
方法,该方法间接加载图像并将其存储在RCTImageCache
中。由于没有直接访问图像缓存的桥接功能,所以你有点不走运。
但是,您可以通过将对Image.prefetch
的调用封装在跟踪哪些已完成的函数中来解决此问题:
// imagePrefetch.js
const prefetchedImages = {};
export function prefetchImage(url) {
return Image.prefetch(url)
.then(val => {
prefetchedImages[url] = true;
return val;
});
};
export function isPrefetched(url) {
return prefetchedImages[url] !== undefined;
}
请注意,这是您预取的图片的解决方法,而不是通过其他方式加载缓存的其他图片。