React implementiert die Prinzipanalyse der drei Phasen Laden, Laden, Abschluss und Ladefehler

React implementiert die Prinzipanalyse der drei Phasen Laden, Laden, Abschluss und Ladefehler

Kürzlich schrieb ich in meinem Blog, dass ich festgestellt habe, dass sich hier in der Projektliste viele Bilder befanden und das Laden am Anfang langsam sein würde. Deshalb wollte ich ein loading verwenden, um Platz zu beanspruchen. Wenn das Laden des Bildes fehlschlägt, wird gleichzeitig anstelle des ursprünglichen Fehlers das Fehlerbild angezeigt, was hässlich ist.

Wirkung

Bildbeschreibung hier einfügen

Prinzipanalyse

Dies ist eine Komponente, eine Komponente zum Anzeigen von Bildern. Ändern Sie einfach die URL-Adresse des img-Tags. Ja, das ist richtig. Ändern Sie die Adresse direkt in Vue, und Vue aktualisiert die Daten entsprechend.

Bild der Veranstaltung

Es gibt viele Ereignisse für Bilder, z. B. onload , onerror usw. Das Ereignis onload wird aufgerufen, sobald das Bild geladen wird, unabhängig davon, ob das Laden erfolgreich war oder fehlgeschlagen ist. Die Methode onerror wird aufgerufen, wenn das Bild nicht angezeigt wird. Aus dem Vergleich dieser beiden Methoden können wir erkennen, dass wir zum Laden des Images am Anfang Onload verwenden müssen und dass das Image erfolgreich sein oder fehlschlagen kann usw.

Komponentencode

importiere { ImgHTMLAttributes } von "react";

/**
 * Eigenschaften der Bildplatzhalterkomponente*/
Exportschnittstelle IImagProps<T> erweitert ImgHTMLAttributes<T> {
  /**
   * Bilder werden geladen */
  Bild wird geladen?: Zeichenfolge,
  /**
   * Das Bild konnte nicht geladen werden */
  Fehlerbild?: Zeichenfolge,
 /**
  * Die Adresse, unter der das Bild normalerweise angezeigt wird*/
  src: Zeichenfolge,
}

importiere React, { useState } von 'react'
// Die folgenden beiden dienen zum Importieren der Standardbilder: import loadImg von './../../../assets/imgs/loading/load.gif';
importiere errorImg aus './../../../assets/imgs/loading/error.png'
exportiere Standardfunktion Img(props: IImagProps<any>) {
  // Bildadresse const [src, setSrc] = useState(props.loadingImg as string)
  // Ist das das erste Mal, dass geladen wird? Wenn du das nicht verwendest, wird es zweimal geladen const [isFlag, setIsFlag] = useState(false)
  /**
   * Bild geladen*/
  const handleOnLoad = () => {
    // Bestimmen Sie, ob es das erste Mal ist, zu laden, if (isFlag) return;
    // Ein img-Tag erstellen const imgDom = new Image();
    imgDom.src = props.src;
    // Das Laden des Bildes ist abgeschlossen. Verwenden Sie das normale Bild imgDom.onload = function () {
      setIsFlag(true)
      setSrc(Eigenschaften.src)
    }
    // Laden des Bilds fehlgeschlagen, Bildplatzhalter verwenden imgDom.onerror = function () {
      setIsFlag(true)
      setSrc(props.errorImg als Zeichenfolge)
    }
  }
  
  zurückkehren (
    <>
      <img src={src}
        beim Laden={handleOnLoad}
        Stil={{
          Höhe: 'erben',
        }}
      ></img>
    </>
  )
}
// Standardstil zum Laden von Bildern und fehlgeschlagenen Bildern festlegen Img.defaultProps = {
  Bild wird geladen: Bild wird geladen,
  Fehlerbild: Fehlerbild
}

PS: Schauen wir uns den Ladeeffekt an, bevor das img-Bild in React geladen wird

  • Ich habe eine solche Anforderung in React, nämlich, dass ich den Ladeanimationseffekt vor dem Laden des Bildes anzeigen und das Bild nach dem Laden rendern möchte.
  • Lassen Sie uns zuerst über die spezifischen Ideen sprechen und dann über die praktische Anwendung
  • Umsetzungsideen:
// Angenommen, ich möchte diese drei Webbilder laden var imglist = ['http://example.com/demo1.png','http://example.com/demo2.png','http://example.com/demo3.png']
// images wird zum Speichern der geladenen Bilder verwendet var images = []
imglist.fürJeden(el=>{
	var image = neues Image()
	image.src = el
	bild.onload = funktion(){
		// Zeigt an, dass das Bild geladen wurde. // Das geladene Bild zu den Bildern hinzufügen images.push(image)
	}
})

//Beurteilen, wann die Komponente gerendert wird, if(images.length === 3){
	// Dies bedeutet, dass alle drei Webseitenbilder geladen wurden und gerendert werden können. // Geladene Bilder rendern. }else{
	// Dies bedeutet, dass die Bilder der Webseite noch nicht vollständig geladen wurden, sodass der Ladeanimationseffekt fortgesetzt wird. // Ladeanimationseffekt}

Konkrete Implementierungsbeispiele

React von „react“ importieren
importiere { Carousel, Spin } von 'antd' // benutze antd
// Erstellen Sie die Home-Komponentenklasse Home extends React.Component{
	Konstruktor (Requisiten) {
		super(Requisiten)
		dieser.Zustand = {
			Bildliste: [
				{
					ID: '01',
					Quelle: 'http://example.com/demo1.png',
					alt: 'demo1'
				},
				{
					ID: '02',
					Quelle: 'http://example.com/demo2.png',
					alt: 'demo2'
				},
				{
					ID: '03',
					Quelle: 'http://example.com/demo3.png',
					alt: 'demo3'
				}
			],
			Bilder: []
		}
	}
	UNSAFE_componentWillMount(){
		// Führen Sie Operationen vor dem Rendern aus var { imglist } = this.state
		var Bilder = []
		imglist.fürJeden(el=>{
			var image = neues Image()
			bild.src = el.src
			bild.beladen = ()=>{
				Bilder.push(Bild)
				dies.setState({
					Bilder
				})
			}
		})
	}
	machen(){
		var { imglist, Bilder } = dieser.Zustand
		wenn(Bilder.Länge === 3){
			// Dies bedeutet, dass alle drei Bilder geladen wurden und gerendert werden können. return (
				<div Klassenname = 'gemeinsamer Textkörper'>
					<Karussell automatisch abspielen>
						{imglist.map(el=>(
							<img src={el.src} key={el.id} alt={el.alt} />
						))}
					</Karussell>
				</div>
			)
		}anders{
			// Das Bild wurde noch nicht vollständig geladen, daher sollte zu diesem Zeitpunkt der Ladeanimationseffekt angezeigt werden return (
				<div Klassenname = 'gemeinsames Laden'>
					<Spin-Tipp='Wird geladen...' Größe='groß'></Spin>
				</div>
			)
		}
	}
}
Standard-Startseite exportieren

Diese Methode ist noch nützlicher

Oben finden Sie den detaillierten Inhalt der Prinzipanalyse der drei Phasen der Implementierung von React: Laden von Bildern, Laden abgeschlossen und Laden fehlgeschlagen. Weitere Informationen zum Abschluss des Ladens von Bildern von React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Mehrere Implementierungslösungen für das verzögerte Laden von React-Routen
  • React Native-Codebeispiel basierend auf FlatList Pulldown Refresh Pullup Load
  • Beispiel für eine benutzerdefinierte Pulldown-Aktualisierung mit Pullup und geladener Liste in React Native
  • React-native ListView zum Aktualisieren nach unten ziehen und zum Laden des Implementierungscodes nach oben ziehen
  • Implementierung und Prinzip des On-Demand-Ladens von React-Router 4 – ausführliche Erläuterung
  • Detaillierte Erklärung zur Verwendung von require.ensure() zum bedarfsgesteuerten Laden von ES6-Komponenten in der React-Entwicklung

<<:  Perfekte Lösung für keine rc.local-Datei in Linux

>>:  Der einfachste Weg, MySQL 5.7.20 mit yum in CentOS 7 zu installieren

Artikel empfehlen

Grundlegendes Tutorial zur Verwendung der Explain-Anweisung in MySQL

Inhaltsverzeichnis 1. Übersicht 1. Aussagetest er...

Detailliertes Tutorial zur Installation von mysql5.7.18 auf centos7.3

1 Überprüfen Sie die Linux-Distributionsversion [...

Implementierung des Nginx Intranet Standalone Reverse Proxy

Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...

Vue+echarts realisiert gestapelte Balkendiagramme

In diesem Artikel wird der spezifische Code von V...

Eine kurze Diskussion über zwei Strombegrenzungsmethoden in Nginx

Die Belastung wird im Allgemeinen während des Sys...

Die Grundprinzipien und die detaillierte Verwendung des Ansichtsfensters

1. Übersicht über das Ansichtsfenster Mobile Brow...

Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet „modify“, um Elemente zu ...

Ein unverzichtbarer Karriereplan für Webdesigner

Originalartikel, bei Nachdruck bitte Autor und Qu...

Einfaches Anwendungsbeispiel für rekursive MySQL 8.0-Abfragen

Vorwort Dieser Artikel verwendet die neuen Funkti...