Next JS 동적 라우팅

폴더명 [키워드] : 키워드는 아무 글자를 사용하여도 됨.(보통 [slug] 형태로 많이 사용)

// app/products/[slug]/page.tsx type Props = { params: { slug: string; }; }; export default function Pants({ params }: Props) { return <div>{params.slug} 제품 설명 페이지</div>; }
JavaScript
복사
예시)
localhost:8008/products/pants → app/products/[slug]/page.tsx
localhost:8008/products/skirt → app/products/[slug]/page.tsx
이렇게 하여, build를 할 경우.
app/products/[slug]/page.tsx 는 SSR 으로 빌드가 됨.
그런데, 만약 pants, skirts는 고정이고, 이외의 것을 받고 싶다. 는 경우, 다음처럼 작성하여야 함.
generateStaticParams 함수를 추가하고, slug(키워드) 객체배열을 반환해야함.
// app/products/[slug]/page.tsx type Props = { params: { slug: string; }; }; export default function Pants({ params }: Props) { return <div>{params.slug} 제품 설명 페이지</div>; } export function generateStaticParams() { const products = ["pants", "skirt"]; return products.map((product) => ({ slug: product, })); }
JavaScript
복사
이렇게 하여, build 할 경우.
pants와 skirt가 SSG로 렌더 된 것을 확인할 수 있다.

폴더명 (키워드) : 실제로 path에는 반영하지않고, 코드상에서 그룹핑하는 용도로 이용한다.

폴더명 […키워드] : 다중 서브 패스를 한번에 정의한다.

예시)

폴더명 [[…키워드]] : 이중 대괄호 안에 매개변수를 포함하여 옵션으로 만들 수 있다.

예시)

Props Type 정리

참고