중첩 라우트

중첩 라우팅과 레이아웃 수명 주기

React Router의 nested routes는 URL에 맞춰 부모 레이아웃을 유지하고 자식 영역만 바꾸는 구조다. Outlet 위치, index route, relative link, loader/오류 경계를 함께 설계해야 탭, 상세, 설정 화면이 자연스럽게 이어진다.

01

공유 레이아웃 찾기

사이드바, 헤더, 탭처럼 URL이 바뀌어도 유지될 영역을 부모 route로 둔다.

공유 UI가 없으면 중첩이 과할 수 있다
02

Outlet 배치

자식 route가 렌더링될 정확한 위치에 Outlet을 놓고 주변 상태의 수명 주기를 정한다.

부모가 unmount되지 않는다는 점을 활용한다
03

index route 설정

부모 경로 자체로 들어왔을 때 보여줄 기본 자식 화면을 명시한다.

빈 Outlet은 사용자를 멈추게 한다
04

상대 경로 사용

Link와 navigate에서 현재 route 기준 상대 경로와 params 상속을 확인한다.

슬래시 하나가 전체 경로 기준으로 바꾼다
05

오류 경계 분리

자식 데이터 로딩 실패가 부모 레이아웃 전체를 무너뜨리지 않도록 boundary를 나눈다.

부분 실패 UI가 사용자 흐름을 살린다
Layout
유지되는 UI 부모 route는 공통 UI와 공통 데이터를 들고 자식만 바뀌게 한다.
불필요한 remount를 줄인다
Outlet
자식 삽입 위치 Outlet이 없으면 자식 route가 매칭되어도 화면에 보이지 않는다.
레이아웃 컴포넌트의 핵심이다
Index
기본 자식 부모 경로에 딱 맞는 URL에서 보여줄 기본 화면을 제공한다.
리다이렉트와 index 중 의도를 고른다
경계
부분 오류 처리 자식 route의 loader/action 실패를 가까운 경계에서 처리한다.
부모 navigation은 유지할 수 있다

라우팅 확인

새로고침 깊은 자식 URL에서 새로고침해도 부모 레이아웃과 데이터가 맞는지 본다.
기본 경로 부모 URL만 열었을 때 빈 화면이 아닌 index 화면이 나오는지 확인한다.
오류 분리 자식 데이터 실패 때 부모 내비게이션이 유지되는지 확인한다.