Search code examples
javascriptreactjsonerror

React img onError event not triggered


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.


Solution

  • You're not actually calling the function. Try one of these two options:

    onError={this.addDefaultSrc} or onError={(e) => this.addDefaultSrc(e)}