Выбор ответа Middle React 18-19: Suspense, transitions, RSC обновлено
useDeferredValue и debounce
Вопрос
Чем useDeferredValue отличается от debounce на 300 мс?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет фиксированной задержки: фоновый рендер с новым значением прерывается вводом. Debounce ждёт фиксированное время после последнего события. useDeferredValue не ждёт: на быстром устройстве обновление будет почти мгновенным, на медленном фоновый рендер будет прерываться новым вводом.
Варианты ответа
- Нет фиксированной задержки: фоновый рендер с новым значением прерывается вводомправильный ответ
- Это одно и то же, просто встроенное в React и с задержкой по умолчанию
useDeferredValueждёт 500 мс по умолчанию, а задержку меняют вторым аргументомuseDeferredValueуменьшает число сетевых запросов так же, как debounce
Разбор
Debounce ждёт фиксированное время после последнего события. useDeferredValue не ждёт: на быстром устройстве обновление будет почти мгновенным, на медленном фоновый рендер будет прерываться новым вводом. Поэтому для тяжёлого рендера он лучше, а для экономии сетевых запросов нужен именно debounce: отложенное значение меняется на каждое изменение, и запросов не станет меньше.
- Это разные механизмы.
- Фиксированной задержки нет.
- Число запросов он не уменьшает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «React 18-19: Suspense, transitions, RSC»
- Функция из серверного компонента в клиентский
- RSC и SSR
- Что запускает Suspense
- Transition для значения поля
- use в условии
- Промис, созданный в рендере, и use
- Что значит use server
- Ошибка гидрации