DOM и React Senior Состояние и useState/useReducer обновлено

useInterval

Условие

Хук вызывает колбэк каждые delay мс. Колбэк всегда должен быть свежим, при этом смена колбэка не должна пересоздавать таймер. delay === null останавливает таймер.

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

  • вызывает колбэк

  • null останавливает

  • свежий колбэк без пересоздания таймера

Как подойти

Классический хук Дэна Абрамова. Разделение на два эффекта решает конфликт: колбэк должен быть свежим (иначе устаревшее замыкание), но таймер не должен перезапускаться на каждый рендер (иначе он никогда не досчитает). Ref - мост между этими требованиями.

Подсказки: 2
  1. Держи колбэк в ref и обновляй его отдельным эффектом.
  2. В зависимостях таймера должен быть только delay.

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

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