You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router v6如何获取带参数名的路由路径?

获取React Router路由的原始带参数占位符路径

要拿到带参数名(比如/main/:id)的原始路由路径,不能直接通过useLocation实现,因为它返回的是填充了实际参数值的路径。你可以通过React Router提供的matchRoutes函数结合路由配置数组来实现:

  1. 先整理路由配置为数组(如果还没这么做的话),方便后续匹配:
// 路由配置数组
const routes = [
  { path: "/main/:id", element: <Page /> },
  // 其他路由配置...
];
  1. 在目标组件(Page)中使用matchRoutes匹配当前路由:
import { useLocation, matchRoutes } from "react-router-dom";

function Page() {
  const location = useLocation();
  // 匹配当前路径对应的路由配置
  const matchedRoute = matchRoutes(routes, location)?.[0];
  
  if (matchedRoute) {
    const originalPath = matchedRoute.route.path;
    console.log(originalPath); // 输出 "/main/:id"
  }

  return <div>页面内容</div>;
}

原理说明

matchRoutes会根据当前的location对象,在你提供的路由配置数组中找到最匹配的路由项,然后你就能从匹配结果中拿到路由配置里定义的原始path(也就是带:id这种参数占位符的路径)。

如果你的项目是用JSX方式直接写<Route>而没有单独的路由数组,建议抽成数组形式,这样不仅能实现这个需求,也便于路由的统一管理和复用。

内容的提问来源于stack exchange,提问作者sir-haver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:31:06