useRouter()
↔ Custom Hook to combine useParams()
, useLocation()
, useHistory()
& useRouteMatch()
boilerplate snippet for custom useRouter combo hook
export default function useRouter() {
const params = useParams()
const location = useLocation()
const history = useHistory()
const match = useRouteMatch()
// return memoized Router object with history methods
return useMemo(() => {
return {
push: history.push,
replace: history.replace,
pathname: location.pathname,
query: {
...queryString.parse(location.search),
...params
},
match,
location,
history
}
}, [params, match, location, history]
}