DOM и React Middle Эффекты и жизненный цикл обновлено
Устаревшее замыкание в интервале
Условие
Счётчик должен расти каждые 30 мс. Эффект запускается один раз при монтировании - сделай так, чтобы значение росло, а не застряло на единице.
Что проверяют тесты
растёт дальше единицы
интервал снимается
Как подойти
Пустой массив зависимостей означает, что колбэк навсегда замкнулся на значения первого рендера. Два выхода: функциональная форма сеттера (правильный) или ref со свежим значением. Добавлять n в зависимости - плохо: интервал будет пересоздаваться на каждый тик.
Подсказки: 3
- Колбэк интервала создан один раз и навсегда видит n === 0.
- Функциональная форма setN(v => v + 1) не зависит от захваченного значения.
- Возврат из эффекта должен снимать интервал.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.