docs/01-app/03-api-reference/04-functions/use-params.mdx
useParams is a Client Component hook that lets you read a route's dynamic params filled in by the current URL.
'use client'
import { useParams } from 'next/navigation'
export default function ExampleClientComponent() {
const params = useParams<{ tag: string; item: string }>()
// Route -> /shop/[tag]/[item]
// URL -> /shop/shoes/nike-air-max-97
// `params` -> { tag: 'shoes', item: 'nike-air-max-97' }
console.log(params)
return '...'
}
'use client'
import { useParams } from 'next/navigation'
export default function ExampleClientComponent() {
const params = useParams()
// Route -> /shop/[tag]/[item]
// URL -> /shop/shoes/nike-air-max-97
// `params` -> { tag: 'shoes', item: 'nike-air-max-97' }
console.log(params)
return '...'
}
const params = useParams()
useParams does not take any parameters.
useParams returns an object containing the current route's filled in dynamic parameters.
string or array of string's depending on the type of dynamic segment.useParams returns an empty object.useParams will return null on the initial render and updates with properties following the rules above once the router is ready.For example:
| Route | URL | useParams() |
|---|---|---|
app/shop/page.js | /shop | {} |
app/shop/[slug]/page.js | /shop/1 | { slug: '1' } |
app/shop/[tag]/[item]/page.js | /shop/1/2 | { tag: '1', item: '2' } |
app/shop/[...slug]/page.js | /shop/1/2 | { slug: ['1', '2'] } |
When cacheComponents is enabled, useParams may require a Suspense boundary. This depends on whether the params can be resolved during prerendering.
generateStaticParams: every dynamic param is known at build time. useParams resolves on the server and no Suspense boundary is required.generateStaticParams: the param is not known until request time. useParams suspends. Wrap the component (or a parent) in a Suspense boundary so its fallback can be rendered during prerendering; otherwise, the build fails.See Next.js encountered URL data in a Client Component outside of Suspense for full fix options and trade-offs.
| Version | Changes |
|---|---|
v13.3.0 | useParams introduced. |