我正在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/