Race Conditions und Effect-Cleanup
Verwenden Sie AbortController in useEffect, um veraltete fetch-Anfragen bei einem erneuten Rendering abzubrechen.
Race Conditions und Effect-Cleanup ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Willkommen
Was ist eine Race Condition?
Der Fehler: Veraltete Abrufantwort
useEffect(() => {
fetch('/api/item/' + id)
.then(r => r.json())
.then(data => setData(data)); // may run AFTER a newer fetch!
}, [id]);Lösung 1: Ignore-Flag
useEffect(() => {
let ignore = false;
fetch('/api/item/' + id)
.then(r => r.json())
.then(data => { if (!ignore) setData(data); });
return () => { ignore = true; };
}, [id]);Lösung 2: AbortController
useEffect(() => {
const controller = new AbortController();
fetch('/api/item/' + id, { signal: controller.signal })
.then(r => r.json())
.then(data => setData(data))
.catch(err => {
if (err.name === 'AbortError') return; // expected
setError(err.message);
});
return () => controller.abort();
}, [id]);AbortController mit async/await
useEffect(() => {
const ctrl = new AbortController();
async function load() {
try {
const res = await fetch('/api/' + id, { signal: ctrl.signal });
const json = await res.json();
setData(json);
} catch (e) {
if (e.name !== 'AbortError') setError(e.message);
}
}
load();
return () => ctrl.abort();
}, [id]);Bereinigung ist immer erforderlich
Die useEffect-Stolperfalle bei async
useEffect(() => {
// useEffect callback is NOT async
async function fetchData() { /* ... */ }
fetchData(); // call it
return () => ctrl.abort();
}, [id]);Bibliotheken erledigen das für Sie
Race Conditions testen
Kurze Überprüfung
Zusammenfassung
Als Nächstes
Häufig gestellte Fragen
Ist die Lektion „Race Conditions und Effect-Cleanup“ kostenlos?
Ja — der vollständige Text von „Race Conditions und Effect-Cleanup“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Race Conditions und Effect-Cleanup“?
Verwenden Sie AbortController in useEffect, um veraltete fetch-Anfragen bei einem erneuten Rendering abzubrechen. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Race Conditions und Effect-Cleanup“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Race Conditions und Effect-Cleanup
- useTransition für blockierungsfreie UI-Updates
- useDeferredValue zur Eingabe-Entprellung
- Suspense für Daten- und Code-Grenzen