【问题标题】:React-Native Disable Image Cache on AndroidReact-Native 在 Android 上禁用图像缓存
【发布时间】:2019-02-20 18:12:42
【问题描述】:

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

我已经尝试过端点:

  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组件时缓存图片并显示不同的图片?

【问题讨论】:

标签: android react-native caching expo


【解决方案1】:

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

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

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

【讨论】:

  • 很棒的技巧,最后我最终使用了:this.state.photoURL + '?v=' + Date.now
  • 现在是 2021 年,这仍然是最好的(也可能是唯一的)解决方案。
  • 终于!我试图显示刚刚拍摄的照片react-native-camera-hooks 的预览,用户在其中拍摄了一系列照片并可以重新拍摄最后一张照片,但无论如何它都卡在显示拍摄的第一张照片。在没有+ '?' + new Date() 的 iOS 上运行良好,但在 Android...TY 上运行良好。附言Hajan 的解决方案 (+ '?v=' + Date.now) 对我不起作用
【解决方案2】:

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

【讨论】:

  • 这行得通。我花了一天时间来解决这个问题。
猜你喜欢
  • 2023-03-17
  • 2019-11-30
  • 1970-01-01
  • 2018-09-11
  • 2020-03-03
  • 2017-06-23
  • 2016-06-17
  • 1970-01-01
  • 2018-05-21
相关资源
最近更新 更多