Выбор ответа Middle React 18-19: Suspense, transitions, RSC обновлено

useDeferredValue и debounce

Вопрос

Чем useDeferredValue отличается от debounce на 300 мс?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет фиксированной задержки: фоновый рендер с новым значением прерывается вводом. Debounce ждёт фиксированное время после последнего события. useDeferredValue не ждёт: на быстром устройстве обновление будет почти мгновенным, на медленном фоновый рендер будет прерываться новым вводом.

Варианты ответа

  1. Нет фиксированной задержки: фоновый рендер с новым значением прерывается вводомправильный ответ
  2. Это одно и то же, просто встроенное в React и с задержкой по умолчанию
  3. useDeferredValue ждёт 500 мс по умолчанию, а задержку меняют вторым аргументом
  4. useDeferredValue уменьшает число сетевых запросов так же, как debounce

Разбор

Debounce ждёт фиксированное время после последнего события. useDeferredValue не ждёт: на быстром устройстве обновление будет почти мгновенным, на медленном фоновый рендер будет прерываться новым вводом. Поэтому для тяжёлого рендера он лучше, а для экономии сетевых запросов нужен именно debounce: отложенное значение меняется на каждое изменение, и запросов не станет меньше.

  • Это разные механизмы.
  • Фиксированной задержки нет.
  • Число запросов он не уменьшает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.