Next.js의 병렬 세그먼트(@archive)는 특정 경로에 대해 독립적인 UI 조각을 렌더링하기 위해 설계된 기능입니다. 병렬 세그먼트 내부의 layout.jsx가 /archive/2023 경로에서만 렌더링되고 /archive에서는 렌더링되지 않는 이유는 라우팅의 구조와 동작 방식 때문입니다. 아래에서 이를 자세히 설명하겠습니다.
1. 병렬 세그먼트의 동작 원리
병렬 세그먼트란?
병렬 세그먼트는 같은 URL의 서로 다른 부분을 동시에 렌더링할 수 있도록 도와줍니다. 병렬 세그먼트는 특정 디렉토리(예: @archive) 내부에서만 동작하며, 상위 레이아웃에 독립적으로 작동합니다.
렌더링 규칙
- /archive:
- **app/archive/layout.jsx**와 **app/archive/page.jsx**가 렌더링됩니다.
- 병렬 세그먼트(@archive)는 렌더링되지 않습니다.
- /archive/2023:
- **app/archive/layout.jsx**와 app/archive/@archive/layout.jsx, 그리고 **app/archive/@archive/page.jsx**가 렌더링됩니다.
이유
- 병렬 세그먼트는 해당 세그먼트 경로에만 적용됩니다.
- /archive는 병렬 세그먼트를 활성화하지 않습니다. 병렬 세그먼트는 /archive/[slug] 같은 구체적인 경로에서만 작동합니다.
- 병렬 세그먼트는 독립적인 경로를 분리하여 관리하도록 설계되었습니다.
- /archive는 일반 레이아웃과 페이지를 기준으로 작동합니다.
- 병렬 세그먼트 내부의 레이아웃은 해당 세그먼트와 관련된 경로(/archive/[slug])에만 렌더링됩니다
Next.js에서 병렬 세그먼트(@segment)가 경로와 독립적으로 작동한다는 것은, 병렬 세그먼트는 자신의 경로와 해당 경로에 연결된 컴포넌트만 처리하도록 설계되었다는 의미입니다. 즉, 병렬 세그먼트는 상위 경로(/archive)에서 자동으로 활성화되지 않고, **명시적으로 관련된 하위 경로(/archive/2023 등)**에서만 동작합니다.
app/
archive/
layout.jsx <- 상위 레이아웃
page.jsx <- /archive 경로의 페이지
@archive/
layout.jsx <- 병렬 세그먼트의 레이아웃
page.jsx <- 병렬 세그먼트 경로(/archive/[slug])의 페이지
- /archive 경로:
- **app/archive/layout.jsx**와 **app/archive/page.jsx**가 렌더링됩니다.
- **@archive/layout.jsx**는 병렬 세그먼트에 관련된 경로가 아니므로 렌더링되지 않습니다.
- /archive/2023 경로:
- **app/archive/layout.jsx**가 렌더링됩니다.
- 동시에 **app/archive/@archive/layout.jsx**도 렌더링됩니다.
- @archive/layout.jsx는 병렬 세그먼트의 역할을 하므로, 이 경로에서만 활성화됩니다.
@archive내부에 header를 만들어서 layout에 넣을 생각이었는데
하위에 세그먼트가 달려야지 해당하는 layout이 들어간다고 하여
상위에 있는 layout에 넣기로 결정했다
'개발 > NEXTJS' 카테고리의 다른 글
| useFormStatus, useFromState, useActionState 비교 (0) | 2025.01.04 |
|---|---|
| 서버 컴포넌트에서 loading이 필요 한 이유 (2) | 2025.01.03 |
| slug 동적 라우트와 catch-all 라우트 차이 이해하기 (1) | 2025.01.02 |
| Next.js 15의 Page Props 변경사항 정리 (1) | 2024.12.29 |
| APP ROUTER 파일 이름 정리 (0) | 2024.12.20 |