TGViewer
Frontender Libs - обзор библиотек JS / CSS Frontender Libs - обзор библиотек JS / CSS @swebdev · 7.45K subscribers
Post #4110 1.51K
Оптимизация событий с помощью debounce

Иногда функция вызывается слишком часто — например, при вводе в поисковую строку или скролле страницы. Это перегружает приложение.

useDebounce в React помогает запускать действие только после того, как пользователь перестал что-то делать.
import { useEffect, useState } from "react";

function useDebounce<T>(value: T, delay: number) {
const [debounced, setDebounced] = useState(value);

useEffect(() => {
const id = setTimeout(() => setDebounced(value), delay);
return () => clearTimeout(id);
}, [value, delay]);

return debounced;
}


Пример:
const [query, setQuery] = useState("");
const debouncedQuery = useDebounce(query, 500);

useEffect(() => {
if (debouncedQuery) {
fetch(`/api/search?q=${debouncedQuery}`);
}
}, [debouncedQuery]);


Теперь запрос отправляется только через 500 мс после остановки ввода, а не при каждом нажатии клавиши.

👉 @sWebDev
  • 👍 3
  • ❤ 1
More from @swebdev
  1. Sep 26, 2026🤖 AI для фронтенд-разработчика: собираем инструменты на Podlodka Frontend Crew AI-инструм…
  2. Mar 23, 2026👉 @sWebDev | #книги
  3. Mar 23, 2026JavaScript для профессиональных веб-разработчиков Автор доступно объясняет сложные концепц…
  4. Jan 27, 2026Tabulator Библиотека, которая превращает HTML-таблицы или данные из JavaScript в интеракти…
  5. Jan 9, 2026Post #4134
  6. Jan 9, 2026Отложенный вызов Вопрос: Что произойдёт, если передать null в качестве задержки в useTimeo…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →