In my create-react-app I have cards that display server-side images and I want to use a dummy image when no server-side image is returned. It seems that 'onError' event is never triggered. Here is my code:
import React from 'react';
import notfound from '../../icons/notfound.png';
class Card extends React.Component {
constructor(props) {
super(props);
this.state = {
open: false
}
}
addDefaultSrc(ev){
ev.target.src = {notfound};
ev.target.onerror = null;
}
render(){
return (
<div>
<div><img className="item-photo" onError={() => this.addDefaultSrc} src={url} alt=""></img>
</div>
</div>
);
}
and CardsList
return (
<Card
key={i}
id={item.No}
url={`http://***.***.*.*:3000/${item.No}.JPG`}
/>
Although I am getting 404 error (Not Found) when there is no image to be displayed, onError event is not triggered. Any help would be much appreciated.
You're not actually calling the function. Try one of these two options:
onError={this.addDefaultSrc}
or onError={(e) => this.addDefaultSrc(e)}