Cześć.
Pisząc swoją aplikację w React napotkałem taki błąd:
Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
Przyczyną błędu jest próba aktualizowania stanu aplikacji w hooku useEffect (z pomocą biblioteki axios). Po małym researchu natrafiłem na coś takiego:
useEffect(() => {
let isMounted = true;
someAsyncOperation().then(data => {
if (isMounted) setState(data);
})
return () => { isMounted = false };
}, []);
Czysto teoretycznie ten przykład działa, lecz wydaje mi się to trochę zaśmiecaniem kodu. W dodatku gdy, w niektórych przypadkach fetch wykonuje się nie w useEffect, a w osobnej funkcji wywoływanej na zdarzenie onClick kodu dochodzi jeszcze więcej.
Czytałem również o odwoływaniu zapytań axios'a, ale to dalej nie rozwiązuje problemu ze zdarzeniem kliknięcia.
Czy macie na to jakieś lepsze rozwiązania?