DOM и React Middle Эффекты и жизненный цикл обновлено

Устаревшее замыкание в интервале

Условие

Счётчик должен расти каждые 30 мс. Эффект запускается один раз при монтировании - сделай так, чтобы значение росло, а не застряло на единице.

Что проверяют тесты

  • растёт дальше единицы

  • интервал снимается

Как подойти

Пустой массив зависимостей означает, что колбэк навсегда замкнулся на значения первого рендера. Два выхода: функциональная форма сеттера (правильный) или ref со свежим значением. Добавлять n в зависимости - плохо: интервал будет пересоздаваться на каждый тик.

Подсказки: 3
  1. Колбэк интервала создан один раз и навсегда видит n === 0.
  2. Функциональная форма setN(v => v + 1) не зависит от захваченного значения.
  3. Возврат из эффекта должен снимать интервал.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.