Ucieczka z pułapki: Naprawianie stale closures w React Hooks

Stale closures powodują cichą utratę danych w React.

Budujesz dashboard z timerem działającym w tle. Używasz setInterval wewnątrz hooka useEffect, aby automatycznie zapisywać dane co 5 sekund.

Błąd pojawia się w momencie uruchomienia interwału. Zapisuje on pusty dokument, nawet jeśli użytkownik wpisał całą stronę. Interwał pozostaje uwięziony w przeszłości – używa starej wersji stanu.

Problem

Gdy useEffect się uruchamia, przechwytuje zmienne znajdujące się w jego zakresie (scope).

Rozwiązanie: Wzorzec Mutable Ref

Musisz oddzielić timer od danych. Użyj hooka useRef, aby zachować stałe odniesienie do swojego najnowszego stanu. Pozwala to uniknąć ponownych renderowań i utrzymuje interwał w stabilności.

Jak to zaimplementować:

Ta metoda zapewnia, że zadania działające w tle zawsze korzystają z aktualnych danych. Dzięki temu interfejs użytkownika pozostaje szybki, a dane bezpieczne.

Źródło: https://dev.to/iprajapatiparesh/escaping-the-trap-fixing-stale-closures-in-react-hooks-4gg7