javascript - React Native - 需要具有默认源的图像源
问题描述
我正在从 API 中获取一个 ID 列表,其中大部分我在本地存储了一个关联的图像。但是,某些 ID 没有图像,因此在尝试获取其来源时会返回错误。
这是我获取来源的方式:
<Image style={{height: '100%', width: '100%'}} source={require('../assets/character-images/' + this.character.id + '.jpg'))}/>
我怎样才能有一个默认的后备源?如果找不到图像,我什至不介意不加载图像......我就是无法摆脱这个错误。谢谢。
解决方案
您可以处理图像上的 onError 事件,并改为渲染不同的图像。可以在下面找到接受默认图像的示例组件。
export default class ImageWithFailback extends React.Component {
constructor(props) {
super(props);
this.state = {
hasError: false
};
}
_onError = () => {
this.setState({ hasError: true });
}
render() {
const failBackImage = <Image source={this.props.default} style={this.props.style} />;
if (this.state.hasError) return failBackImage;
return (
<Image
{...this.props}
onError={this._onError}
renderIndicator={_ => failBackImage}
/>
);
}
}
推荐阅读
- c - 在多个结构指针和数组中为结构指针的成员赋值
- android - 报警意图进入快速无限循环
- apache-spark - S3 上的 Parquet 文件格式:哪个是实际的 Parquet 文件?
- python - 求解带阶跃函数的微分方程
- jquery - div 在从顶部以设置的像素数滚动后变为固定,也仅大于设置的窗口宽度,并添加了边框底部
- qnx - 致命:使用 mkxfs 的文件系统溢出错误
- php - 来自变量的Wordpress过滤器?
- python-3.x - 如何显示相距 15 分钟的记录的频率
- azure-devops - VSTS Publish Artifact 为空,MVC Web 应用程序在本地部署
- python - 在 Pandas Dataframe 列中的嵌套字典中搜索和替换