React router v6 访问路由外参数的最简单方法

myc*_*OOM 6 reactjs react-router

<Menu/>

<Routes>
<Route path="/" element={<HomeView />} />
<Route path="/website/:Id" element={<WebsiteView />} />
</Routes>
Run Code Online (Sandbox Code Playgroud)

从 Menu 组件访问 Id 参数的最简单方法是什么?

UseParams 只能在路由渲染的元素中使用。

我目前正在这样做:

const location = useLocation();

const Id = location.pathname.split("/")[2]
Run Code Online (Sandbox Code Playgroud)

然而,我认为这对我来说还不够严格。我想要用反应方式检索 Id Param - 请不要花哨的解决方案,这是最简单的方法。

Fio*_*rei 6

您可以使用matchPath

反应路由器 v6:

const match = matchPath({ path: "/users/:id" }, "/users/123");
Run Code Online (Sandbox Code Playgroud)

反应路由器 v5:

const match = matchPath("/users/123", {
  path: "/users/:id",
  exact: true,
  strict: false
});
Run Code Online (Sandbox Code Playgroud)