Skip to main content

동적 세그먼트 (Dynamic Segments)

[slug]처럼 대괄호로 감싼 폴더 이름은 동적 세그먼트를 생성합니다. 하나의 page.tsx로 여러 URL을 처리할 수 있습니다. 아래 링크를 클릭해서 각기 다른 slug로 같은 page.tsx가 렌더링되는 것을 확인해보세요.

파일 구조

app/blog/
└── [slug]/
    └── page.tsx  → /blog/:slug (단일 파일로 모든 slug 처리)

핵심 코드

// app/blog/[slug]/page.tsx
export default async function BlogPostPage({
  params,
}: {
  params: Promise<{ slug: string }>
}) {
  const { slug } = await params
  const post = await getPost(slug)

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  )
}