React · Middle · Запитання 11 з 75

Чому лічильник зупиниться на 1?

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

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

Пояснення

Ефект із [] створено один раз, і він бачить count з першого рендеру. Кожен тік ставить 0 + 1. Рішення: функціональне оновлення setCount(c => c + 1) (найкраще), додати count у залежності (інтервал перестворюватиметься) або зберігати значення в ref.

Де почитати

Помилка в запитанні

React · Middle · запитання 11

Перевірте себе

Пройдіть тест React · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест