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

React Router 6多路由参数传递与接收问题咨询

React Router 6 问题解决方案

问题1:Route配置多参数后路由不匹配

你配置的<Route path="/SetServiceConfer/:name/:family" element={<ListServiceConfer />} />本身逻辑没问题,出现"not matching routes found"通常是以下原因导致:

  • 跳转路径格式错误:访问的路径必须严格遵循/SetServiceConfer/[name值]/[family值]的结构,比如/SetServiceConfer/John/Doe,不能省略参数或格式混乱。不用useNavigate的话,可直接用Link组件跳转:<Link to={/SetServiceConfer/${name}/${family}}>进入列表页</Link>,地址栏直接输入也要保证格式一致。
  • 路由层级冲突:如果这个Route是嵌套在其他路由下(比如父Route的path是/admin),完整路径需要拼接父路由前缀,即/admin/SetServiceConfer/:name/:family,跳转时要对应这个完整路径。
  • 拼写/大小写不一致:React Router 6路由匹配区分大小写,检查路径名、组件名的拼写是否和配置完全一致。

正确使用示例:

// 路由配置
<Route path="/SetServiceConfer/:name/:family" element={<ListServiceConfer />} />

// 非useNavigate跳转方式
<Link to={`/SetServiceConfer/${name}/${family}`}>进入列表页</Link>

// 目标组件接收参数
import { useParams } from 'react-router-dom';

function ListServiceConfer() {
  const { name, family } = useParams();
  return <div>姓名:{name},姓氏:{family}</div>;
}

问题2:useNavigate传参后useParams接收不到

这里混淆了两种参数的概念:search对应的是URL查询参数(?后面的部分),而useParams()是用来接收路由路径参数(:定义的URL片段)的,两者不能混用。

方案1:用查询参数接收

修改跳转代码(注意search要以?开头,参数需键值对格式):

onClick={() => {
  HandleFetchListServiceConfer();
  navigate({
    pathname: "/SetServiceConfer",
    search: `?name=${name}&family=${family}`,
  });
}}

目标组件用useSearchParams获取参数:

import { useSearchParams } from 'react-router-dom';

function ListServiceConfer() {
  const [searchParams] = useSearchParams();
  const name = searchParams.get('name');
  const family = searchParams.get('family');
  return <div>姓名:{name},姓氏:{family}</div>;
}

方案2:改用路径参数跳转

如果想继续用useParams接收,就用路径参数的方式跳转:

onClick={() => {
  HandleFetchListServiceConfer();
  navigate(`/SetServiceConfer/${name}/${family}`);
}}

保持原Route配置path="/SetServiceConfer/:name/:family",即可通过const { name, family } = useParams();正常获取参数。


内容的提问来源于stack exchange,提问作者yasxcv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:40:28