/
lizardking
/
react_final
Обзор
Документация
Войти
/
lizardking
/
react_final
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/features/product/hooks/usePostsSearchForm.ts
36 строк
1009 B
LizardKing
Рефакторинг на FSD
24 ноя 2025, 16:05
24 ноя 2025, 16:05
eedf5c5
Код
Авторство
О чём код?
import { useEffect, useState } from 'react' import { useSearchParams } from 'react-router-dom' import { useDebounce } from 'shared/hooks/useDebounce' import { useAppDispatch } from 'shared/store/utils' import { productsActions } from '../slice/products' const QUERY_SEARCH_PHRASE = 'q' 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, } }