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

X0r*_*r0N 5 android caching react-native 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>
Run Code Online (Sandbox Code Playgroud)

期望是对于每个Image组件,将显示不同的图像。奇怪的是,这不适用于 Android。似乎图像或 url 被缓存在某处,因此当使用相同的 URI 再次呈现图像时,将显示相同的图像。

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

有没有办法防止android缓存图像并在每次Image渲染组件时显示不同的图像?

Ole*_*leg 5

在 2020 年,它仍然是 React Native 的一个问题(正如 Dishant Walia 提到的)。现在来自 github 的最佳解决方案是:

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

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

  • 现在是 2021 年,这仍然是最好的(也可能是唯一的)解决方案。 (2认同)

Dis*_*lia 4

不知怎的,你必须添加随机字符串来重新加载具有相同 uri 的图像。我通过在图像网址中添加随机字符串解决了同样的问题。请关注此评论以获取更多信息 React Native 图像问题