当我使用image.prefetch方法时,我想清理其磁盘缓存,但是我在react Antive中没有找到适当的方法。
更新以澄清:React Native此时不揭示您需要进行操作的方法,您将不得不使用第三方解决方案。
o,而不是使用本机image.prefetch(),您可以使用我的高阶组件模块升级< image>处理缓存/永久存储并完成此操作。
反应本机图像缓存HOC
tl; Dr Code示例:
import imageCacheHoc from 'react-native-image-cache-hoc';
const CacheableImage = imageCacheHoc(Image);
export default class App extends Component<{}> {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>Welcome to React Native!</Text>
<CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/rc29s4bz61uz.png'}} />
<CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/hhhim0kc5swz.jpg'}} permanent={true} />
</View>
);
}
}
第一个图像将被缓存,直到本地高速缓存的总成长超过15 MB(默认为),然后将缓存的图像删除最古老,直到总数再次低于15 MB。
第二张图像将永久存储到本地磁盘。人们将其用作使用您的应用程序运送静态图像文件的替换。
如果您想预先加热等image.prefetch()
import imageCacheHoc from 'react-native-image-cache-hoc';
const CacheableImage = imageCacheHoc(Image);
CacheableImage.cacheFile('https://i.redd.it/hhhim0kc5swz.jpg')
.then( localFileInfo => {
console.log(localFileInfo);
// Console log outputs:
//{
// url: 'https://i.redd.it/rc29s4bz61uz.png',
// cacheType: 'cache', //add true as 2nd param to cacheFile() to make permanent
// localFilePath: '/this/is/absolute/path/to/file.jpg'
//}
});
然后,当您想按要求从磁盘清除时:
import RNFetchBlob from 'react-native-fetch-blob';
RNFetchBlob.fs.unlink(localFilePath.localFilePath)
.then(() => {
console.log('file deleted!');
});
希望这对您有帮助!