prerendered
)되는 동적 세그먼트를 사용할 수 있다. [folderName]
[id]
[slug]
params
의 props
로 layout
,page
, route
그리고 generateMetadata
함수에 전달된다. // app/blog[slug]/page.tsx
export default async function Page({
params,
}: {
params: Promise<{ slug: string }>
}) {
const slug = (await params).slug
return <div>My Post: {slug}</div>
}
params
속성은 Promise
로 전달되기 때문에 값에 접근하기 위해서는 async/await
또는 React'suse
를 사용해야 한다. params
가 동기적(synchronous)로 제공되었지만pages
디렉토리에서 사용하던 동적 라우트(Dynamic Routes)와 동일한 개념이다generateStaticParams
함수는 동적 경로 세그먼트와 함께 사용해 요청 시(on-demand)가 아닌 빌드 시(build time)에 정적으로 라우트를 생성할 수 있다. export async function generateStaticParams() {
const posts = await fetch('https://.../posts').then((res) => res.json())
return posts.map((post) => ({
slug: post.slug,
}))
}
generateStaticParams
함수의 주요 장점generateStaticParams
내부에서 fetch
요청을 사용하면, 요청이 자동으로 메모이제이션이 가능하다.fetch
요청이 여러 generateStaticParams
, layout
,page
에서 호출되더라도 한번만 실행된다.[...folderName]
[[...folderName]]