Openstatus www.openstatus.dev
at main 33 lines 869 B view raw
1import { useSearchParams } from "next/navigation"; 2import * as React from "react"; 3 4/** 5 * 6 * @deprecated use `nuqs` instead 7 */ 8export default function useUpdateSearchParams() { 9 const searchParams = useSearchParams(); 10 11 /** 12 * Get a new searchParams string by merging the current searchParams with a provided key/value pair. 13 * If param is `null`, will be deleted. 14 */ 15 const update = React.useCallback( 16 (params: Record<string, boolean | string | number | null>) => { 17 const newSearchParams = new URLSearchParams(searchParams?.toString()); 18 19 for (const [key, value] of Object.entries(params)) { 20 if (value === null) { 21 newSearchParams.delete(key); 22 } else { 23 newSearchParams.set(key, String(value)); 24 } 25 } 26 27 return newSearchParams.toString(); 28 }, 29 [searchParams], 30 ); 31 32 return update; 33}