what is different between useLocation and useRouteMatch as they are both used to access current Path and URL?
useLocation
Provides access to the location prop in React Router
const location = useLocation();
It is similar to window.location in the browser itself, but this is accessible everywhere as it represents the Router state and location.
A primary use case for this would be to access the query params or the complete route string.
const queryParams = new URLSearchParams(location.search);
or
history.push(`${location.pathname}?sort=${(isSortingAscending ? 'desc' : 'asc')}`);
useRouteMatch
Provides access to the match object
If it is provided with no arguments, it returns the closest match in the component or its parents.
const match = useRouteMatch();
A primary use case would be to construct nested paths.
For Links:
<Link to={`${match.url}/comments`} className='btn--flat'>
For Routes :
<Route path={`${match.path}/comments`}>
<Comments />
</Route>
instead of :
<Route path={`/quotes/${params.quoteId}/comments`}>