wouter-search
Version:
Provide useSearchParams(), useSearchParam() and useSearchParamJson() hooks for wouter
15 lines (14 loc) • 621 B
JavaScript
import { useCallback, useRef } from 'react';
export function useSearchParam(key, searchParams, setSearchParams) {
const searchParam = searchParams.get(key);
const setSearchParamRef = useRef();
setSearchParamRef.current = (nextInit, options) => {
setSearchParams((prev) => {
const prevValue = prev.get(key);
prev.set(key, typeof nextInit === 'function' ? nextInit(prevValue) : nextInit);
return prev;
}, options);
};
const setSearchParam = useCallback((...args) => setSearchParamRef.current(...args), []);
return [searchParam, setSearchParam];
}