Beim Abrufen von Daten in React auf Basis dynamischer Props können schnelle Änderungen zu überlappenden Netzwerkanfragen führen, die in falscher Reihenfolge aufgelöst werden (Race Conditions). Durch die Verwendung eines booleschen Flags (`isCurrent`) innerhalb jedes Effect-Lebenszyklus, das in der Cleanup-Funktion auf `false` gesetzt wird, wird sichergestellt, dass veraltete asynchrone Antworten oder Fehler ignoriert werden, falls die Komponente mit einer neuen `userId` neu gerendert wird, bevor das vorherige Promise abgeschlossen ist.
function UserProfile({ userId }) {const [userData, setUserData] = React.useState(null);const [fetchError, setFetchError] = React.useState(null);React.useEffect(() => {let isCurrent = true;async function loadUser() {try {const response = await fetch(`/api/users/${userId}`);if (!response.ok) throw new Error(`HTTP status: ${response.status}`);const data = await response.json();if (isCurrent) {setUserData(data);}} catch (err) {if (isCurrent) {setFetchError(err.message);}}}loadUser();return () => {isCurrent = false;};}, [userId]);return <div>{fetchError ? `Error: ${fetchError}` : userData?.name}</div>;}