Wie erkennt man, wann ein Bild geladen wird, das über Requisiten bereitgestellt wird, und ändert den Status in React?
Lesezeit: 5 Minuten
Sergio Jimenez Corominas
Ich möchte ein anderes Bild (falschen Avatar) laden, während das endgültige Avatar-Bild geladen wird. Die Idee besteht darin, zu erkennen, wann das Requisitenbild geladen ist, und einen Status zu ändern. Ist es möglich? Einige Ideen? Danke schön!
Es gibt mehrere Möglichkeiten, dies zu tun, aber die einfachste besteht darin, das endgültige Bild ausgeblendet anzuzeigen und es dann sichtbar zu machen, sobald es geladen ist.
Genau das suche ich. Das ist der einfachste Weg. Es gibt noch ein anderes Problem, das auf die Komponente wartet, aber das ist ein anderes Thema 🙂
– Sergio Jimenez Corominas
30. März 2017 um 13:17 Uhr
Wie können wir so etwas erstellen, damit mehrere Bilder in einer Schleife geladen werden?
– Ranjith
18. Okt. 2017 um 17:27 Uhr
@Ranjith Sie würden eine Zuordnung von ID/SRC-Werten zu Booleschen Werten speichern, die angeben, ob sie geladen wurden.
– Räuber
19. Okt. 2017 um 9:41
@Ranjith, Sie könnten eine separate „Bild“-Komponente erstellen, damit sie ihren eigenen Status hat. Dann müssen Sie sich keine Gedanken über die Schlüssel-/ID-Zuordnung machen.
– Benutzer723505
9. Juni 2018 um 18:17 Uhr
@FakeRainBrigand Danke, was ist mit Hintergrundbildern? <div style={{ backgroundImage: 'url(${url})' }} />?
– Zünder
21. Dezember 2018 um 14:35 Uhr
Dieselbe Antwort wie Brigands akzeptierte Antwort, jedoch mit Hooks:
Sie können noch einen Schritt weiter gehen, indem Sie beim Bildwechsel einen Einblendübergang hinzufügen. Der Code unten ist mein CrossFadeImage Komponente. Kopieren Sie es einfach und verwenden Sie es anstelle des Normalen img Komponente.
Der CrossFadeImage hat 2 Bilder, top Und bottom. bottom darauf gestapelt ist top und wird verwendet, um das Bild anzuzeigen, das animiert werden muss, in diesem Fall das alte Bild, das beim Umschalten ausgeblendet wird.
Im Ruhezustand, top zeigt das aktuelle Bild an bottom ist das vorherige Bild, aber in transparent
CrossFadeImage wird beim Erkennen die folgenden Dinge tun props.src Änderungen
Setzen Sie beide SRCs zurück, um alle aktuell laufenden Animationen abzubrechen
Satz top‘s src zum neuen Bild und bottomist die Quelle des aktuellen Bildes, das im nächsten Frame ausgeblendet wird
Satz bottom auf transparent, um den Übergang einzuleiten
Eine bessere Möglichkeit zu erkennen, wann ein Bild geladen wird, besteht darin, einen Verweis auf das Element zu erstellen und dann einen Ereignis-Listener zum Verweis hinzuzufügen. Sie können das Hinzufügen von Event-Handler-Code in Ihrem Element vermeiden und die Lesbarkeit Ihres Codes wie folgt verbessern: