gpt4 book ai didi

android - 在 uri 的失败响应上加载缩略图 - React Native

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:40 24 4
gpt4 key购买 nike

我需要根据数组长度在循环中渲染图像标签,我的图片标签看起来与此类似

<Image
style={{width: 50, height: 50}}
source={{uri: 'https://facebook.github.io/react/img/logo_og1.png'}}
//if image fails to load from the uri then load from'./img/favicon.png'
onError={(error) => {console.log('loadinf',error)}}
/>

如果从 Uri 获取时发生错误,即 404 错误重试一段时间或显示默认本地镜像。如何在 React Native 中做到这一点?

最佳答案

您使用 defaultSource 属性在真实图像的位置放置了加载图像,但目前它仅适用于 iOS。我们可以实现您写的另一件事,它应该显示本地镜像,以防无法通过以下方法从 Internet 加载图像。

  1. 将原始图像 URI 存储在状态中。
  2. 在图像的 source 中使用此 URI。
  3. 当调用 onError 函数时,将此状态变量更改为您的本地镜像。

例子:

import React, {Component} from 'react';
import {
View,
Image
} from 'react-native';

export default class Demo extends Component {
constructor(props) {
super(props);

this.state = {
image: {
uri: 'something demo'
}
}
}

render() {
return <View>
<Image
source={ this.state.image }
onError={(a) => {
this.setState({
image: require('image.png')
});
}}
style={{ height: 100, width: 100 }}
/>
</View>
}
}

重试图像的肮脏 hack 是这样的:

let counter = 0;
export default class reactNativePange extends Component {
constructor(props) {
super(props);

this.state = {
image: {
uri: 'something demo'
},
failed: false
}
}

render() {
return (
<View style={styles.container}>
<Image
source={ this.state.failed ? require('./image.png') : { uri: 'something demo' } }
onError={(a) => {
if(counter >= 3) {
this.setState({
failed: true
});
} else {
counter++;
this.setState({
failed: true
});
setTimeout(() => {
this.setState({
failed: false
});
}, 1)
}
}}
style={{ height: 100, width: 100 }}
/>
</View>
);
}
}

As I mentioned that this is a dirty hack as the image might flicker during the retry.

关于android - 在 uri 的失败响应上加载缩略图 - React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45522146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com