debounce search

This commit is contained in:
Simon 2025-01-30 20:26:20 +07:00
parent d643e8c573
commit 937ff5c92c
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4

View File

@ -47,6 +47,7 @@ const Search = () => {
const gridItems = userMeConfig.grid_items || 3;
const [searchQuery, setSearchQuery] = useState('');
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState<string>('');
const [searchResults, setSearchResults] = useState<SearchResultsType>();
const [refresh, setRefresh] = useState(false);
@ -75,19 +76,28 @@ const Search = () => {
const gridViewGrid = isGridView ? `grid-${gridItems}` : '';
useEffect(() => {
(async () => {
if (!hasSearchQuery) {
const handler = setTimeout(() => {
setDebouncedSearchTerm(searchQuery);
}, 500);
return () => {
clearTimeout(handler);
};
}, [searchQuery]);
useEffect(() => {
if (debouncedSearchTerm.trim() !== '') {
fetchResults();
} else {
setSearchResults(EmptySearchResponse);
return;
}
}, [debouncedSearchTerm, refresh]);
const searchResults = await loadSearch(searchQuery);
const fetchResults = async () => {
const searchResults = await loadSearch(debouncedSearchTerm);
setSearchResults(searchResults);
setRefresh(false);
})();
}, [searchQuery, refresh, hasSearchQuery]);
};
return (
<>