React · Middle · Pytanie 11 z 75

Dlaczego licznik zatrzymuje się na 1?

const [count, setCount] = useState(0);

useEffect(() => {
  const id = setInterval(() => setCount(count + 1), 1000);
  return () => clearInterval(id);
}, []);

Wyjaśnienie

Efekt z [] jest tworzony raz i widzi count z pierwszego renderu. Każde tyknięcie ustawia 0 + 1. Rozwiązania: aktualizacja funkcyjna setCount(c => c + 1) (najlepiej), dodanie count do zależności (interwał jest odtwarzany) lub trzymanie wartości w ref.

Do poczytania

Błąd w pytaniu

React · Middle · pytanie 11

Sprawdź się

Rozwiąż test React · Middle: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test