mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-18 20:09:08 +02:00
26 lines
765 B
TypeScript
26 lines
765 B
TypeScript
|
import { useCallback, useMemo } from 'react';
|
||
|
import { useHistory } from 'react-router-dom';
|
||
|
|
||
|
// Store a value in the query string. Call setState to update the query string.
|
||
|
export const useQueryStringState = (
|
||
|
key: string
|
||
|
): [string | undefined, (value: string) => void] => {
|
||
|
const { search } = window.location;
|
||
|
const { replace } = useHistory();
|
||
|
|
||
|
const params = useMemo(() => {
|
||
|
return new URLSearchParams(search);
|
||
|
}, [search]);
|
||
|
|
||
|
const setState = useCallback(
|
||
|
(value: string) => {
|
||
|
const next = new URLSearchParams(search);
|
||
|
next.set(key, value);
|
||
|
replace({ search: next.toString() });
|
||
|
},
|
||
|
[key, search, replace]
|
||
|
);
|
||
|
|
||
|
return [params.get(key) || undefined, setState];
|
||
|
};
|