DOM и React Senior Состояние и useState/useReducer обновлено
useInterval
Условие
Хук вызывает колбэк каждые delay мс. Колбэк всегда должен быть свежим, при этом смена колбэка не должна пересоздавать таймер. delay === null останавливает таймер.
Что проверяют тесты
вызывает колбэк
null останавливает
свежий колбэк без пересоздания таймера
Как подойти
Классический хук Дэна Абрамова. Разделение на два эффекта решает конфликт: колбэк должен быть свежим (иначе устаревшее замыкание), но таймер не должен перезапускаться на каждый рендер (иначе он никогда не досчитает). Ref - мост между этими требованиями.
Подсказки: 2
- Держи колбэк в ref и обновляй его отдельным эффектом.
- В зависимостях таймера должен быть только delay.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Термины по теме
Ещё по теме «Состояние и useState/useReducer»
- Производное значение
- Стабильность dispatch
- Батчинг
- Ленивая инициализация state
- Функциональный апдейтер
- useReducer
- Апдейтер вперемешку со значением
- Ленивая инициализация