我的目标是能够使用 react-native-fetch-blob 缓存图像。我的问题是尝试读取 React Native Image 组件中的 react-native-fetch-blob 路径的来源。屏幕上没有显示任何内容,我查看了几个堆栈溢出和 github 问题和问题,但找不到解决方案。这是针对安卓的。
我相信我能够正确地将图像存储在文件目录中。我正在运行下面的 storeImages() 代码,它有一个 RNFetchBlob.fs.exists() 方法,在检查文件路径时返回 true。下面的代码在另一个 API 调用中的我的 redux 文件中运行。它根据它的 schedule_id 值从 redux 对象中获取信息来存储图像。
Redux 中的storeImages()
function storeImages(obj){
let picDir = RNFetchBlob.fs.dirs.PictureDir;
//Run first for the Card Image
RNFetchBlob.config({
fileCache : true,
//is appendExt necessary? I tried both and nothing displayed
// appendExt : 'jpg',
path: ${picDir}/${obj.schedule_id}BG
})
.fetch('GET', `${obj.cardImage}`, {
})
.then((res) => {
let status = res.info().status;
RNFetchBlob.fs.exists(res.path())
.then((res) => {
console.log(res);
})
if(status == 200) {
// the temp file path
console.log('The file saved to ', res.path())
}
})
.catch((errorMessage, statusCode) => {
console.log(errorMessage);
})
我也在我的组件中导入 React Native Fetch Blob,然后使用相同的图像路径,并且字符串中的计划 ID 来自容器组件。由于它是保存图像的 API 调用,因此我使用 RNFetchBlob.fs.exists() 来查看文件是否已存储。这将返回 true 并在源属性中显示图像。我使用uri,因为图像路径是动态创建的。
我的组件中的渲染()
render() {
let picDir = RNFetchBlob.fs.dirs.PictureDir;
let imgPath= `${picDir}/${this.props.assetData[0].schedule_id}BG`;
return(
// Max height and width of screen
<View style={{ position: 'absolute', top: 0, left: 0, height, width, zIndex: 1 }}>
{
RNFetchBlob.fs.exists(${picDir}/{${this.props.assetData[0].schedule_id}BG)
?
<Image source={{ uri: imgPath}} resizeMode='cover' style={{flex: 1}} />
:
null
}
</View>
)
}
如果您对我有任何问题,请告诉我。