我有一个应用程序,它大量使用来自React Native的Image组件。
我知道缓存对远程图像很好,但我需要加载定期更改的本地图像。
即使本地文件发生更改,Image组件也会缓存文件并显示缓存的版本。
问题是,我如何在本地文件上禁用缓存,而为远程URL保留它(因为我混合了本地和远程URL)?
我会给出一个代码示例,但从字面上看,它就像这样简单
<Image source={{uri: 'file://image.png'}} />
注意:这些文件是由应用程序中的操作创建和更改的,因此require('image.png')不会对其进行剪切。我一直使用它处理静态图像,效果很好,但它是静态的,而不是动态的。
我还在字符串的末尾看到了关于随机查询参数的答案。这通常是非常老生常谈的,所以我不会雇用你的工作:),但除此之外,它显然不起作用。
提前干杯!
根据对far....when的评论和回答,可以清楚地看到镜像文件的变化。它需要立即更改图像组件,因此需要清除缓存和状态,并显示新图像。
发布于 2021-05-01 01:39:50
回答有点晚了,但您可以将查询"?time=new Date()"添加到变量中,如下所示:
const [profilePicture] = useState(`${baseURL}${user.infoUser.image_profile}?time=${new Date()}`);这种方法的主要问题是每次都会刷新图像,因此显示图像的延迟可能会很高。
发布于 2018-03-05 17:31:32
捕捉对你的应用程序是有好处的,所以你不想停下来。这类问题的解决方案是更改图像的名称以及图像本身。在不更改名称的情况下更改图像将不起任何作用。
你可以有这样的东西
<Image source={{uri: `file://${imageName}`}} />, 这是你发布的唯一一段代码,所以我不能再提更多的建议了。
更好的是,您可以将imageName存储为状态的一部分,以便能够随时重新呈现为不同的状态。
<Image source={{uri: `file://${this.state.imageName}`}} />发布于 2018-03-05 18:56:59
我认为问题在于没有监听器来监听图像资源本身的变化(我也不认为有这样的库)。如果您不想更改文件的名称,唯一可能的解决方案是触发一个事件(或状态/redux- change),以在每次更改代码中的Image时强制重新加载组件。
否则,你必须编写自己的库,它总是监听图像的变化,并在每次有变化的时候重新加载组件。
https://stackoverflow.com/questions/49106339
复制相似问题