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

react-router-dom中路径参数名冲突时useParams的取值规则

同名路径参数冲突的取值结果

当路由路径定义为home/user/:id/friends/:id时,组件内通过useParams()解构获取的id,对应路径中位置更靠后的friends/:id段的参数值。
举个实际例子:如果访问的路径是home/user/1001/friends/2002,最终拿到的id值是字符串"2002",前面user段的参数值"1001"会直接丢失。

react-router-dom 对同名参数的处理逻辑
  • 路由匹配阶段,解析路径参数的顺序是从左到右遍历路径段,每匹配到一个路径参数,就会把键值对写入存储参数的params对象中。
  • 如果遇到和已有键重名的参数,会直接用新匹配到的值覆盖之前存储的同名字段值,默认不会做重名校验、值合并之类的特殊处理。
  • 整个路径解析完成后,params对象中每个参数名只会保留最后一次(也就是路径最右侧位置)匹配到的值,前面所有同名参数的值都会被覆盖,无法通过useParams()读取。

开发提示:实际项目中不要在同一条路由路径里定义同名路径参数,会导致前置段的参数值无法获取。不同位置的参数应该使用区分度的命名,比如将上述路径改为home/user/:userId/friends/:friendId,就可以通过useParams()同时拿到两个段的参数值。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:36:39