( config: UseSearchParamsKeyConfig, )
| 14 | }>; |
| 15 | |
| 16 | export const useSearchParamsKey = ( |
| 17 | config: UseSearchParamsKeyConfig, |
| 18 | ): UseSearchParamKeyResult => { |
| 19 | // Cannot use function update form for setSearchParams, because by default, it |
| 20 | // will always be linked to innerSearchParams, ignoring the config's params |
| 21 | const [innerSearchParams, setSearchParams] = useSearchParams(); |
| 22 | |
| 23 | const { |
| 24 | key, |
| 25 | searchParams = innerSearchParams, |
| 26 | defaultValue = "", |
| 27 | replace = true, |
| 28 | } = config; |
| 29 | |
| 30 | return { |
| 31 | value: searchParams.get(key) ?? defaultValue, |
| 32 | setValue: (newValue) => { |
| 33 | searchParams.set(key, newValue); |
| 34 | setSearchParams(searchParams, { replace }); |
| 35 | }, |
| 36 | deleteValue: () => { |
| 37 | searchParams.delete(key); |
| 38 | setSearchParams(searchParams, { replace }); |
| 39 | }, |
| 40 | }; |
| 41 | }; |
no test coverage detected