/
lizardking
/
react_final
Обзор
Документация
Войти
/
lizardking
/
react_final
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
old
src/shared/ui/Search/hooks/usePostsSearchForm.ts
40 строк
1 KB
LizardKing
Initial commit
22 ноя 2025, 15:56
22 ноя 2025, 15:56
0df0d9e
Код
Авторство
О чём код?
import { useEffect, useState } from 'react' import { useSearchParams } from 'react-router-dom' import { useDebounce } from '../../../hooks/useDebounce' import { productsActions } from '../../../store/slices/products' import { useAppDispatch } from '../../../store/utils' const QUERY_SEARCH_PHRASE = 'q' export type UseProductsSearchFormParams = { setProductsSearchFilter: (newFilter: string) => void } export const useProductsSearchForm = () => { const dispatch = useAppDispatch() const [searchParams, setSearchParams] = useSearchParams() const [searchValue, setSearchValue] = useState(() => searchParams.get(QUERY_SEARCH_PHRASE) ?? '') const optimizedValue = useDebounce(searchValue, 500) useEffect(() => { dispatch(productsActions.setSearchText(optimizedValue)) }, [optimizedValue, dispatch]) useEffect(() => { if (searchValue) { searchParams.set(QUERY_SEARCH_PHRASE, searchValue) } else { searchParams.delete(QUERY_SEARCH_PHRASE) } setSearchParams(searchParams) }, [searchParams, searchValue, setSearchParams]) return { searchValue, setSearchValue, } }