How to use either react router useParams() or window.localStorage()

In my scenario , the component should take a value either in the URL or a locale storage but when I attempt to get value from useParams() it throw an error:

Uncaught ReferenceError: useParams is not defined

Really how can I handle this error ?

My code is:

const { userId } = useParams() || props;

How can I fix it?


Solution 1:

I think you didn't import useParams, in which case do so at the top of your file :

import {useParams} from "react-router-dom"

Then do :

let {userId} = useParmas();
if(!userId) userId = props.userId;

Because useParams return an object, an empty object like so {} if there isn't any parameter, but {} is not false, so by doing so useParams() || props, if there isn't an userId parameter in you your url, you will always get undefined.

Solution 2:

Make sure that you have imported useParams. If you have imported it already, then try doing this.

let { userId } = useParams();
if(!userId) userId = props.userId;