react.js Ersetzen Sie img src onerror

Ich habe einen reagieren Komponente, ist der detail-Ansicht aus einer Liste.

Ich versuche, ersetzen Sie das Bild mit einem Standard-Bild, wenn das Bild nicht vorhanden ist und es wird ein 404-Fehler.

Ich würde normalerweise verwenden Sie die onerror-Methode in der img-tag, aber das scheint nicht zu funktionieren.

Ich bin mir nicht sicher, wie dies zu tun mit reagieren.

Hier ist meine Komponente:

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;
  • Ich lief in dieses problem, und ich habe nicht den code, um zu helfen im moment, aber was ich Tat, war, legen Sie die javascript-Prüfung in componentdidmount, das sieht für ein image-Fehler, wenn Sie auftreten, wird ein callback ausgelöst, die ersetzt das Bild mit dem Standard-Bild.
  • Bitte akzeptieren Sie die Antwort von Georgii Oleinikov, weil derzeit beste erzielte beantworten kann produzieren ewigen Schleife und so ist überhaupt nicht gut.
  • Fand dieses video-tutorial zu diesem Thema - youtu.werden/90P1_xCaim4, die eigentlich mir geholfen, Aufbau einer vollwertigen image-Komponente für meine Anwendung. Ich fand auch diese zusammen mit einem tollen Preloader für mein Bild-Komponente - youtu.werden/GBHBjv6xfY4. Durch die Kombination der beiden können Sie einen wunderbaren UX für den Benutzer.
InformationsquelleAutor Joel Lawler | 2015-12-04
Schreibe einen Kommentar