React · Middle · Pytanie 13 z 75
Jak uniknąć wyścigu przy ładowaniu danych w useEffect, jeśli userId szybko się zmienia?
- ✓Poprawna odpowiedź: Flaga
ignorelubAbortControllerw funkcji czyszczącej - 2Dodać
setTimeoutna 300 ms przed każdym żądaniem - 3Usunąć
userIdz tablicy zależności efektu
Wyjaśnienie
Odpowiedzi mogą przychodzić w innej kolejności, a stara odpowiedź nadpisuje nową. W funkcji czyszczącej ustaw ignore = true (wynik jest ignorowany) lub wywołaj controller.abort() (żądanie jest anulowane). Jeszcze lepiej użyć TanStack Query lub ładowania danych we frameworku, gdzie jest to rozwiązane.