/
lyudmleb
/
final-project
Обзор
Документация
Войти
/
lyudmleb
/
final-project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/widgets/Header/model/usePostsSearchForm.ts
38 строк
960 B
Liudmila Lebedeva
почти fsd
18 ноя 2025, 02:07
18 ноя 2025, 02:07
50cbc06
Код
Авторство
О чём код?
import { useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { useDebounce } from '@/shared/lib/hooks'; const QUERY_SEARCH_PHRASE = 'q'; export interface UseProductsSearchFormParams { setProductsSearchFilter: (newFilter: string) => void; } export const useProductsSearchForm = (onSearch: (value: string) => void) => { const [searchParams, setSearchParams] = useSearchParams(); const [searchValue, setSearchValue] = useState( () => searchParams.get(QUERY_SEARCH_PHRASE) ?? '' ); const optimizedValue = useDebounce(searchValue, 500); useEffect(() => { onSearch(optimizedValue); }, [optimizedValue, onSearch]); useEffect(() => { if (searchValue) { searchParams.set(QUERY_SEARCH_PHRASE, searchValue); } else { searchParams.delete(QUERY_SEARCH_PHRASE); } setSearchParams(searchParams); }, [searchParams, searchValue, setSearchParams]); return { searchValue, setSearchValue, }; };