Android上的React-Native禁用图像缓存

时间:2018-09-16 18:34:49

标签: android react-native caching expo

我正在尝试为我正在创建的演示应用程序使用随机图像生成器。

我尝试了端点:

  1. http://thecatapi.com/api/images/get?format=src&type=gif&size=small
  2. http://junglebiscuit.com/images/random/rand_image.pl

但是当我使用以下方法向页面添加图像列表时:

<View>
    <Image
        source={{ uri: 'http://thecatapi.com/api/images/get?format=src&type=gif&size=small' }}
        style={{ width: 100, height: 100 }}
    />
    <Image
        source={{ uri: 'http://thecatapi.com/api/images/get?format=src&type=gif&size=small' }}
        style={{ width: 100, height: 100 }}
    />
    <Image
        source={{ uri: 'http://thecatapi.com/api/images/get?format=src&type=gif&size=small' }}
        style={{ width: 100, height: 100 }}
    />
</View>

期望的是,对于每个Image组件,将显示不同的图像。遗憾的是,这在Android上不起作用。似乎图像或url被缓存在某个地方,因此当使用相同的URI再次渲染图像时,将显示相同的图像。

我在IOS上尝试了相同的应用程序(该应用程序是使用react native expo.io创建的)。该图片与IOS上预期的有所不同,这似乎是Android特有的问题。

有没有一种方法可以防止android每次渲染Image组件时缓存图像并显示不同的图像?

2 个答案:

答案 0 :(得分:2)

您必须以某种方式添加随机字符串以使用相同的uri重新加载图像。我通过在图像URL中添加随机字符串来解决了相同的问题。 关注此评论以获取更多信息 React native image issue

答案 1 :(得分:1)

在2020年,它仍然是本地人反应的一个问题(如Dishant Walia所述)。现在,来自github的最佳解决方案是:

在url之后添加查询字符串,适用于两个平台

<Image
style={styles.drawerAccountImg}
source={uri: this.state.photoURL + '?' + new Date()}
/>