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

Next.js获取URL参数问题:params为空原因及解决办法

Next.js中获取URL查询参数失败的原因及解决方法

问题原因

  • route.params的作用是获取动态路由参数(比如路径/page/[id]中的id),而非URL尾部的查询参数(?id=1这种格式),所以用它来拿?id=1的参数自然为空。
  • Next.js的Pages Router和App Router对路由的API设计不同,若用错对应Router的API,也会导致拿不到参数。

解决方法

1. 若使用Pages Router(Next.js 12及更早,或13+仍使用pages目录)

直接使用useRouter返回的query对象:

import { useRouter } from 'next/router'

export default function Page() {
  const router = useRouter()
  const id = router.query.id

  return <div>当前ID:{id}</div>
}

2. 若使用App Router(Next.js 13+的app目录)

有两种方式可选:

客户端组件中使用useSearchParams

需加上'use client'指令,因为这是客户端专属钩子:

'use client'
import { useSearchParams } from 'next/navigation'

export default function Page() {
  const searchParams = useSearchParams()
  const id = searchParams.get('id')

  return <div>当前ID:{id}</div>
}

服务器组件中直接接收searchParams props

服务器组件无需额外钩子,直接将searchParams作为组件参数接收:

export default function Page({ searchParams }) {
  const id = searchParams.id

  return <div>当前ID:{id}</div>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:35:23