当ブログは14.2.2
)。
こういった
以下が
Route (app) Size First Load JS┌ ○ / 338 B 292 kB...├ ƒ /posts 475 B 662 kB├ ● /posts/[slug] 490 B 662 kB├ ├ /posts/p1e0lpm├ ├ /posts/p18vcqd├ ├ /posts/p16vfnq├ └ [+11 more paths]...└ ○ /sitemap.xml 0 B 0 B+ First Load JS shared by all 87 kB ├ chunks/313-7c44dae77fe97d18.js 31.4 kB ├ chunks/73ebd006-83408596cd117cc0.js 53.6 kB └ other shared chunks (total) 1.93 kB
○ (Static) prerendered as static content● (SSG) prerendered as static HTML (uses getStaticProps)ƒ (Dynamic) server-rendered on demand
/posts
をƒ
とλ
だったと
まず、
静的 Route で
もし、
では、
初めは
消去法でgenerateMetadata
を
Route (app) Size First Load JS┌ ○ / 338 B 292 kB...├ ○ /posts 475 B 666 kB├ ● /posts/[slug] 490 B 666 kB├ ├ /posts/p1e0lpm├ ├ /posts/p18vcqd├ ├ /posts/p16vfnq├ └ [+11 more paths]...└ ○ /sitemap.xml 0 B 0 B+ First Load JS shared by all 87 kB ├ chunks/313-7c44dae77fe97d18.js 31.4 kB ├ chunks/73ebd006-83408596cd117cc0.js 53.6 kB └ other shared chunks (total) 1.93 kB
○ (Static) prerendered as static content● (SSG) prerendered as static HTML (uses getStaticProps)ƒ (Dynamic) server-rendered on demand
(/posts
が
generateMetadata
自体はsearchParams
page.tsx
でparams
はgenerateStaticParams
1 でsearchParams
searchParams
元のgenerateMetadata
は
export const generateMetadata = ({ searchParams }: { searchParams: Record<string, string | string[] | undefined> }) => { const category = (searchParams.category as string) ?? 'blog'; return { title: `${category.charAt(0).toUpperCase()}${category.slice(1)}`, description: 'Blog posts of Keisuke Hayashi.', alternates: { canonical: '/posts', }, openGraph: { url: '/posts', }, } satisfies Metadata;};
これはhttps://kkhys.me/posts?category=tech
とTech
に
結果
export const metadata = { title: 'Blog', description: 'Blog posts of Keisuke Hayashi.', alternates: { canonical: '/posts', }, openGraph: { url: '/posts', },} satisfies Metadata;
静的 Route かつページタイトルをhttps://kkhys.me/posts/tech
のような
Next.js はgenerateStaticParams
でsearchParams
を
コンポーネントでsearchParams
のpage.tsx
のuseSearchParams
パラメータのsearchParams
searchParams
のuseSearchParams
を
今回の
また、
generateStaticParams
関数を使うと 指定された パスパラメータは ビルド時に SSG が 実行される。 逆に 指定しなければ リクエスト時に SSG が 実行されるので できるだけ 指定した方が 良い ↩