наконецто работает поиск верно

This commit is contained in:
gorbenko.pavel
2026-08-06 14:07:37 +05:00
parent 71873e0c30
commit 86ce7056e8
10 changed files with 183 additions and 70 deletions
@@ -33,3 +33,29 @@ export function usePersistedQuery(key: string): [string, (value: string) => void
return [value, setPersisted];
}
// Задержка перед тем, как введённый текст уйдёт в запрос. Без неё поиск
// срабатывает на КАЖДОЕ нажатие клавиши: «согласование» — это 12 полных циклов
// (Search + дочитывание через REST по каждому типу заявок), из которых нужен
// только последний. Заодно снимает часть нагрузки, из-за которой SharePoint
// начинает throttling'ить (429).
const SEARCH_DEBOUNCE_MS = 450;
// Значение, отстающее от переданного на SEARCH_DEBOUNCE_MS: в поле ввода текст
// меняется сразу (без «залипания»), а в запрос уходит только когда пользователь
// перестал печатать. Пустая строка проходит без задержки — очистка поиска
// должна возвращать полный список мгновенно.
export function useDebouncedQuery(value: string, delayMs: number = SEARCH_DEBOUNCE_MS): string {
const [debounced, setDebounced] = React.useState<string>(value);
React.useEffect(() => {
if (!value) {
setDebounced('');
return undefined;
}
const timer = window.setTimeout(() => setDebounced(value), delayMs);
return () => window.clearTimeout(timer);
}, [value, delayMs]);
return debounced;
}