персистнс строки поиска

This commit is contained in:
gorbenko.pavel
2026-08-05 15:13:52 +05:00
parent 68638c765e
commit 9438ee30ad
3 changed files with 39 additions and 2 deletions
@@ -0,0 +1,35 @@
import * as React from 'react';
// Текст поиска переживает перезагрузку страницы (localStorage), но не более
// того — это просто «продолжить с того же места», а не синхронизация между
// вкладками/устройствами. key должен быть уникальным на раздел (см. вызовы в
// RequestsTableView/SearchView), иначе значения разных таблиц перепишут друг друга.
export function usePersistedQuery(key: string): [string, (value: string) => void] {
const storageKey = `rp-search-query:${key}`;
const [value, setValue] = React.useState<string>(() => {
try {
return window.localStorage.getItem(storageKey) || '';
} catch {
return '';
}
});
const setPersisted = React.useCallback(
(next: string): void => {
setValue(next);
try {
if (next) {
window.localStorage.setItem(storageKey, next);
} else {
window.localStorage.removeItem(storageKey);
}
} catch {
// localStorage недоступен (приватный режим и т.п.) — просто не сохраняем.
}
},
[storageKey]
);
return [value, setPersisted];
}