useSearchParams
useSearchParams
. For the React Native version, go here.
declare function useSearchParams(
defaultInit?: URLSearchParamsInit
): [URLSearchParams, SetURLSearchParams];
type ParamKeyValuePair = [string, string];
type URLSearchParamsInit =
| string
| ParamKeyValuePair[]
| Record<string, string | string[]>
| URLSearchParams;
type SetURLSearchParams = (
nextInit?:
| URLSearchParamsInit
| ((prev: URLSearchParams) => URLSearchParamsInit),
navigateOpts?: : NavigateOptions
) => void;
interface NavigateOptions {
replace?: boolean;
state?: any;
preventScrollReset?: boolean;
}
The useSearchParams
hook is used to read and modify the query string in the URL for the current location. Like React's own useState
hook, useSearchParams
returns an array of two values: the current location's search params and a function that may be used to update them. Just as React's useState
hook, setSearchParams
also supports functional updates. Therefore, you may provide a function that takes a searchParams
and returns an updated version.
import * as React from "react";
import { useSearchParams } from "react-router-dom";
function App() {
let [searchParams, setSearchParams] = useSearchParams();
function handleSubmit(event) {
event.preventDefault();
// The serialize function here would be responsible for
// creating an object of { key: value } pairs from the
// fields in the form that make up the query.
let params = serializeFormQuery(event.target);
setSearchParams(params);
}
return (
<div>
<form onSubmit={handleSubmit}>{/* ... */}</form>
</div>
);
}
setSearchParams
function works like navigate
, but only for the search portion of the URL. Also note that the second arg to setSearchParams
is the same type as the second arg to navigate
.