I want to origin url path without router params.
// routers
<Route
exact
path={`/users/userDetail/:userId`}
component={UserDetail}
/>
i want to get string "/users/userDetail" from some components
help me!
You can exclude all params from current pathname by using this hook:
import { useLocation, useParams } from 'react-router-dom';
export const useBasePath = () => {
const location = useLocation();
const params = useParams<Record<string, string>>();
return Object.values(params).reduce(
(path, param) => path.replace('/' + param, ''),
location.pathname,
);
};
Use it like this in your component:
const basePath = useBasePath();
console.log(basePath);
If I understand correctly, you want to extract the path of the current route, while excluding the last userId
part of the URL - assuming that's the case, you could do the following:
const getCurrentPathWithoutLastPart = () => {
return location.pathname.slice(0, location.pathname.lastIndexOf('/'))
}
If your current URL is something like /users/userDetail/some_value
calling the function will yield /users/userDetail
:
getCurrentPathWithoutLastPart() // returns /users/userDetail
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With