Dynamic and Query Parameters
Learn how the params and query props work in Dinou.
Overview
Pages, layouts, slots, not found pages, and error pages in Dinou receive params and query props:
- params contains dynamic route segments like
{ id: "123" }for/blog/[id]. - query contains query parameters from the URL such as
?sort=asc.
Examples
Dynamic Parameters (params)
/blog/[id]/page.tsx→/blog/123passes{ params: { id: "123" } }./wiki/[...slug]/page.tsx→/wiki/a/bpasses{ params: { slug: ["a", "b"] } }./blog/[[category]]/page.tsx:/blog→{ params: { category: undefined } }/blog/tech→{ params: { category: "tech" } }
/wiki/[[...slug]]/page.tsx:/wiki→{ params: { slug: [] } }/wiki/a/b→{ params: { slug: ["a", "b"] } }
Query Parameters (query)
/blog/123?category=tech→{ query: { category: "tech" }, params: { id: "123" } }/search?term=react&page=2→{ query: { term: "react", page: "2" }, params: {} }/blog/tech?sort=asc→{ query: { sort: "asc" }, params: { category: "tech" } }/wiki/a/b?lang=en→{ query: { lang: "en" }, params: { slug: ["a", "b"] } }
Example Usage
// src/blog/[id]/page.tsx
"use client";
export default function Page({
params,
query,
}: {
params: { id: string };
query: { category: string | undefined; sort: string | undefined };
}) {
return (
<div>
<h1>Blog ID: {params.id}</h1>
<h2>Category: {query.category ?? "none"}</h2>
<p>Sort Order: {query.sort ?? "default"}</p>
</div>
);
}Route Patterns Overview
This grid summarizes how params and query are populated depending on the route and the accessed URL.
Route Pattern
Example URL
params
query
/blog/[id]
/blog/123
{ id: "123" }
{}
/blog/[id]
/blog/123?category=tech
{ id: "123" }
{ category: "tech" }
/wiki/[...slug]
/wiki/a/b
{ slug: ["a", "b"] }
{}
/wiki/[...slug]
/wiki/a/b?lang=en
{ slug: ["a", "b"] }
{ lang: "en" }
/blog/[[category]]
/blog
{ category: undefined }
{}
/blog/[[category]]
/blog/tech?sort=asc
{ category: "tech" }
{ sort: "asc" }
/wiki/[[...slug]]
/wiki
{ slug: [] }
{}
/wiki/[[...slug]]
/wiki/a/b
{ slug: ["a", "b"] }
{}
/search
/search?term=react&page=2
{}
{ term: "react", page: "2" }
/search
/search
{}
{}
