tgoop.com/sWebDev/3906
Create:
Last Update:
Last Update:
Отложенное выполнение эффектов
Для эффектов, срабатывающих с задержкой после изменений, создают хук useDebouncedEffect
. Он инкапсулирует логику setTimeout
внутри useEffect
. При обновлении зависимостей хук отменяет предыдущий таймер и устанавливает новый, вызывая колбэк по истечении задержки. Важную роль играет функция очистки useEffect
, отвечающая за сброс таймера.
import { useEffect, useState } from 'react';
const useDebouncedEffect = (effect, deps, delay) => {
useEffect(() => {
const handler = setTimeout(() => effect(), delay);
return () => clearTimeout(handler);
}, [...(deps || []), delay]);
};
function SearchComponent() {
const [searchTerm, setSearchTerm] = useState('');
useDebouncedEffect(() => {
// Логика отправки запроса на сервер
console.log(`Отправка запроса: ${searchTerm}`);
}, [searchTerm], 500);
return (
<input
type="text"
value={searchTerm}
onChange={(e) => setSearchTerm(e.target.value)}
placeholder="Поиск..."
/>
);
}
👉 @sWebDev
BY Frontender Libs - обзор библиотек JS / CSS

Share with your friend now:
tgoop.com/sWebDev/3906