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

useDebounce

Условие

Хук возвращает значение, отстающее от входного на delay миллисекунд: обновляется, только когда значение перестало меняться.

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

  • сразу отдаёт начальное

  • откладывает обновление

  • частые изменения схлопываются

Как подойти

Ключ решения - очистка эффекта: при изменении value React сначала вызывает clearTimeout прошлого эффекта, потом ставит новый. Это и есть debounce, отдельная логика не нужна. delay обязан быть в зависимостях, иначе смена задержки не применится.

Подсказки: 2
  1. Состояние под отложенное значение + эффект с таймером.
  2. Очистка эффекта отменяет прошлый таймер - именно она даёт схлопывание.

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

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