React · Middle · Frage 13 von 75
Wie vermeidet man eine Race Condition beim Laden von Daten in useEffect, wenn sich userId schnell ändert?
- 1Ein Flag
ignoreoder einAbortControllerim Cleanup - 2Vor jedem Request ein
setTimeoutvon 300 ms einbauen - 3
userIdaus dem Abhängigkeitsarray des Effekts entfernen
Antwort zeigen
Richtige Antwort: Ein Flag ignore oder ein AbortController im Cleanup
Erklärung
Antworten können in falscher Reihenfolge ankommen, und eine alte Antwort überschreibt eine neue. Im Cleanup setzt man ignore = true (das Ergebnis wird ignoriert) oder ruft controller.abort() auf (der Request wird abgebrochen). Noch besser sind TanStack Query oder das Datenladen eines Frameworks, wo das gelöst ist.