1234567891011121314151617181920212223242526272829 |
- import {useMemo} from 'react';
- import debounce from 'lodash/debounce';
- import {DEFAULT_DEBOUNCE_DURATION} from 'sentry/constants';
- import {decodeScalar} from 'sentry/utils/queryString';
- import {useLocation} from 'sentry/utils/useLocation';
- import {useNavigate} from 'sentry/utils/useNavigate';
- export function useSearchQueryParam(key: string) {
- const location = useLocation();
- const navigate = useNavigate();
- const query = decodeScalar(location.query[key], '').trim();
- const setQuery = useMemo(
- () =>
- debounce(
- (searchQuery: string) =>
- navigate({
- pathname: location.pathname,
- query: {...location.query, [key]: searchQuery || undefined},
- }),
- DEFAULT_DEBOUNCE_DURATION
- ),
- [location.pathname, location.query, navigate, key]
- );
- return [query, setQuery] as const;
- }
|