mirror of
https://github.com/Unleash/unleash.git
synced 2025-10-27 11:02:16 +01:00
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome to the frontend as well.  Added a few `biome-ignore` to speed up the process but we may want to check and fix them in the future.
26 lines
787 B
TypeScript
26 lines
787 B
TypeScript
import { useCallback, useMemo } from 'react';
|
|
import { useNavigate } 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 navigate = useNavigate();
|
|
|
|
const params = useMemo(() => {
|
|
return new URLSearchParams(search);
|
|
}, [search]);
|
|
|
|
const setState = useCallback(
|
|
(value: string) => {
|
|
const next = new URLSearchParams(search);
|
|
next.set(key, value);
|
|
navigate({ search: next.toString() }, { replace: true });
|
|
},
|
|
[key, search, navigate],
|
|
);
|
|
|
|
return [params.get(key) || undefined, setState];
|
|
};
|