【发布时间】:2016-03-09 22:19:24
【问题描述】:
我有一个反应组件,它是列表中的详细视图。
如果图像不存在并且出现 404 错误,我正在尝试将图像替换为默认图像。
我通常会在 img 标签中使用 onerror 方法,但这似乎不起作用。
我不确定如何使用 react 来做到这一点。
这是我的组件:
import React from 'react';
import {Link} from 'react-router';
import ContactStore from '../stores/ContactStore'
import ContactActions from '../actions/ContactActions';
class Contact extends React.Component {
constructor(props) {
super(props);
this.state = ContactStore.getState();
this.onChange = this.onChange.bind(this);
}
componentDidMount() {
ContactStore.listen(this.onChange);
ContactActions.getContact(this.props.params.id);
}
componentWillUnmount() {
ContactStore.unlisten(this.onChange);
}
componentDidUpdate(prevProps) {
if (prevProps.params.id !== this.props.params.id) {
ContactActions.getContact(this.props.params.id);
}
}
onChange(state) {
this.setState(state);
}
render() {
return (
<div className='container'>
<div className='list-group'>
<div className='list-group-item animated fadeIn'>
<h4>{this.state.contact.displayname}</h4>
<img src={this.state.imageUrl} />
</div>
</div>
</div>
);
}
}
export default Contact;
【问题讨论】:
-
我遇到了这个问题,目前我没有代码可以提供帮助,但我所做的是将 javascript 检查放在 componentdidmount 中,它会查找图像错误,如果它们发生, 会触发一个回调,用默认图像替换该图像。
-
请接受 Georgii Oleinikov 的答案,因为目前得分最高的答案可能会产生永恒的循环,所以一点也不好。
-
找到了这个视频教程 - youtu.be/90P1_xCaim4 它实际上帮助我为我的应用程序构建了一个完整的图像组件。我还发现了这个以及我的图像组件的一个很棒的预加载器 - youtu.be/GBHBjv6xfY4。通过将两者结合起来,您可以为用户提供出色的用户体验。
标签: javascript reactjs http-status-code-404