Why react router v6 useParams returns object with properties possibly 'undefined'?
In my code below, my IDE indicates const slug: string | undefined
.
const { slug } = useParams<"slug">();
It is because of the Params
type definition:
/**
* The parameters that were parsed from the URL path.
*/
export type Params<Key extends string = string> = {
readonly [key in Key]: string | undefined;
};
But why is not Params
defined like this (without the | undefined
):
export type Params<Key extends string = string> = {
readonly [key in Key]: string;
};
If a route with a parameter matches the URL then the parameter cannot be undefined
. So, is there any case when useParams
returns with an undefined
param?
CodePudding user response:
Route params can be possibly undefined if the path has no defined parameters.
Example: "/path/to/page"
There are no route match params to access.
If you were to attempt to access a param
const { id } = useParams();
then id
is of course, undefined.