【问题标题】:Reset internal android image cache in React Native在 React Native 中重置内部 android 图像缓存
【发布时间】:2018-09-11 04:58:41
【问题描述】:

我想咨询在 React Native 中使用 image library 的问题:

在获取数据时,如果我在新获取的新 Json 中更改 Json 中图像的 url,我会得到一个带有图像 URL 的 Json,它们会显示在屏幕(图像)中已下载,但视图中的图像未更新(好像有 android 的内部缓存)。

是否可以只擦除图像缓存而不使用任何外部库? 或者在这种情况下您推荐使用哪个库?

非常感谢,希望得到答复。

【问题讨论】:

标签: android react-native


【解决方案1】:

据我所知,react-native 不支持开箱即用地清除缓存。您可以做的是快速破解。您可以将随机数(如当前日期,以毫秒为单位)附加到要强制重新加载的图像 uri。因为不会使用uri改变的缓存图片。

示例

export default class App extends Component {
  render() {
    const uri = 'https://picsum.photos/200/300?date=' + (new Date()).getTime();
    return (
      <View style={styles.container}>
        <Image source={{uri}} style={{ width: 200, height: 300}} />
        <Text style={styles.paragraph}>
          Change code in the editor and watch it change on your phone!
          Save to get a shareable url.
        </Text>
      </View>
    );
  }
} 

【讨论】:

  • 除非明确清除缓存,否则每个图像会在缓存中累积并占用空间吗?还是自动管理?
  • 这里的一个问题是,每次该组件重新渲染时,图像都会闪烁。
  • 不添加时间戳或随机数,而是附加 Hrs,以便 URL 仅在时钟中的 Hr 更改时才会更改,避免闪烁并使用 hr 缓存
【解决方案2】:

尝试在 url 中附加随机字符串。我通过添加随机字符串解决了同样的问题。

'?t=' + Math.round(new Date().getTime() / 1000)

Follow this link for more info

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2019-02-20
    • 2019-11-30
    • 1970-01-01
    • 2021-05-25
    • 2012-06-27
    • 2020-03-03
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多