[React-Router-DOM v6] Nested Routes

이춘구·2022년 1월 25일
6

Nested Routes(중첩 경로)를 작성하는 방법엔 두 가지가 있다.

1. /*

부모 Routepath 뒤에 /*(와일드카드)를 붙이는 방법.
해당 경로 뒤에 오는 모든(*) 경로에 적용된다는 뜻으로, 해당 Route 내부에서 또다른 Route가 렌더링될 수 있음을 명시한다.
예를 들어, 아래 코드에서 /:coinId/*/:coinId로 시작하는 모든 경로에 대해 <Coin /> 컴포넌트를 렌더링한다.

// Router.tsx

<BrowserRouter>
  <Routes>
    <Route path="/:coinId/*" element={<Coin />} />
    <Route path="/" element={<Coins />} />
  </Routes>
</BrowserRouter>

이제 부모 Route가 렌더하는 컴포넌트(위의 경우 <Coin />) 내부에 자식 Routepathelement를 작성한다.

// Coin.tsx

<Routes>
  <Route path="chart" element={<Chart />} />
  <Route path="price" element={<Price />} />
</Routes>

상대경로를 지원하므로 path="/:coinId/price"로 작성할 필요없이, path="chart"로 작성해도 정상 동작한다.

2. Wrapping

부모 Route로 자식 Route를 감싸는 방법.

// Router.tsx

<BrowserRouter>
  <Routes>
    <Route path="/" element={<Coins />} />
    <Route path="/:coinId/*" element={<Coin />}>
      <Route path="chart" element={<Chart />} />
      <Route path="price" element={<Price />} />
    </Route>
  </Routes>
</BrowserRouter>

이후 부모 Route가 렌더링하는 <Coin /> 내부에 자식 Route를 렌더링할 위치를 <Outlet />으로 표시한다.

// Coin.tsx

<Container>
  <Overview />
  <Outlet />
</Container>
profile
프런트엔드 개발자

0개의 댓글

관련 채용 정보