UNPKG

@newrelic/gatsby-theme-newrelic

Version:

[![Community Project header](https://github.com/newrelic/opensource-website/raw/master/src/images/categories/Community_Project.png)](https://opensource.newrelic.com/oss-category/#community-project)

37 lines (27 loc) 887 B
import { useCallback, useMemo } from 'react'; import { useLocation, navigate } from '@reach/router'; const toQueryString = (queryParams) => Array.from(queryParams.keys()).length ? `?${queryParams}` : ''; const useQueryParams = () => { const location = useLocation(); const queryParams = useMemo( () => new URLSearchParams(location.search), [location.search] ); const setQueryParam = useCallback( (key, value) => { queryParams.set(key, value); navigate(toQueryString(queryParams) || location.pathname); }, [queryParams, location.pathname] ); const deleteQueryParam = useCallback( (key) => { queryParams.delete(key); navigate(toQueryString(queryParams) || location.pathname); }, [queryParams, location.pathname] ); return { queryParams, setQueryParam, deleteQueryParam }; }; export default useQueryParams;