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

Next.js中通过<Link>传递userId后如何正确获取该数据?

Next.js Link组件传参问题解决方法

问题根源

你在Link的query字段里直接传入了userId(值为990),但Next.js要求query必须是键值对格式的对象。直接传值会被解析成「键为990、值为空」的异常参数,所以URL会变成products/12?990,对应的query对象里就出现了{990:""}的奇怪结构。

修正传参代码

把query改成标准的键值对形式,给userId指定明确的键名:

<Link href={{ 
  pathname: `/products/${id}`, 
  query: { userId } // 等价于 { userId: userId }
}}>  
  <a>Show more</a>
</Link>

修改后URL会变成符合规范的products/12?userId=990,query对象结构也会正常显示为{id:"12", userId:"990"}。

接收页面获取参数

在[id].tsx里直接通过键名读取userId即可:

const router = useRouter();
const { id, userId } = router.query;

console.log("产品ID:", id);
console.log("用户ID:", userId);

特殊场景的兼容写法(不推荐)

如果非要保留原有异常参数格式(不符合URL规范,不建议这么做),可以通过遍历query对象的键来提取数值型的userId:

const router = useRouter();
const userId = Object.keys(router.query).find(key => !isNaN(Number(key)));
console.log("用户ID:", userId);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:55:38