我正在React Native中开发一个应用程序。

我有一个问题,即无法加载图像,因为包含图像的视图被[有意地]加载了一次并且不会重新渲染,因此由于加载太晚而无法加载图像。

在运行发行版时,这不是问题,因为图像之类的资产直接加载到设备上,而不是通过Metro Bundler进行流传输。

如何重新创建与发布模式相同的行为,以便在测试时将图像复制到设备,但是仍然可以使用实时重载等开发功能?

最佳答案

您可以在加载图像时使指示器可见。否则,我们可以通过缓存解决此问题。

使用缓存


default:使用本机平台默认策略。
reload:URL的数据将从原始来源加载
资源。不应使用现有的缓存数据来满足URL负载
请求。
force-cache:现有的缓存数据将用于满足
要求,无论其年龄或到期日期如何。如果没有
缓存中与请求相对应的现有数据,该数据为
从原始源加载。
only-if-cached:现有的缓存数据将用于满足
要求,无论其年龄或到期日期如何。如果没有
缓存中与URL加载请求相对应的现有数据,否
尝试从原始源加载数据,并且
加载被视为失败。


<Image
  source={{
    uri: 'https://facebook.github.io/react/logo-og.png',
    cache: 'force-cache',
  }}
  style={{width: 400, height: 400}}
/>


用法加载图像//假设您使用指示器。

this.state={
  loading : true,
  imageUrl :  { uri: 'https://facebook.github.io/react/logo-og.png' }
}

  _onLoad = () => {
     this.setState({ loading: false })
  }

  _onError = () => {
      this.setState({
                      loading: false,
                      imageUrl : require('./assets/defaultImage.png')
                   })
  }

<Image
  source={this.state.imageUrl}
  onLoad={this._onLoad}
  onError={this._onError}
  style={{width: 400, height: 400}}
/>

关于ios - 在调试版本配置中将镜像复制到设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58145839/

10-08 21:08