복잡한 라우팅 구성 예제

2025. 4. 1. 00:40Frameworks/React

복잡한 라우팅 구성 예제

다음은 여러 기능을 조합한 좀 더 복잡한 라우팅 구성 예제입니다:

import { Routes, Route, Navigate } from 'react-router-dom';

function App() {
  const { isAuthenticated } = useAuth();

  return (
    <Routes>
      {/* 공개 라우트 */}
      <Route path="/" element={<PublicLayout />}>
        <Route index element={<Home />} />
        <Route path="about" element={<About />} />
        <Route path="products" element={<Products />} />
        <Route path="products/:id" element={<ProductDetail />} />
        <Route path="login" element={<Login />} />
        <Route path="register" element={<Register />} />
      </Route>

      {/* 인증된 사용자만 접근 가능한 라우트 */}
      <Route
        path="dashboard"
        element={isAuthenticated ? <DashboardLayout /> : <Navigate to="/login" />}
      >
        <Route index element={<Overview />} />
        <Route path="profile" element={<Profile />} />
        <Route path="settings" element={<Settings />} />
        <Route path="orders" element={<Orders />} />
        <Route path="orders/:id" element={<OrderDetail />} />
      </Route>

      {/* 관리자 전용 라우트 */}
      <Route
        path="admin"
        element={isAuthenticated && isAdmin ? <AdminLayout /> : <Navigate to="/login" />}
      >
        <Route index element={<AdminDashboard />} />
        <Route path="users" element={<UserManagement />} />
        <Route path="products" element={<ProductManagement />} />
      </Route>

      {/* 404 페이지 */}
      <Route path="*" element={<NotFound />} />
    </Routes>
  );
}

라우터 v6 주요 훅 정리

React Router v6에서 제공하는 주요 훅과 그 용도를 정리하면 다음과 같습니다:

훅 설명

useParams() URL 패턴에서 동적 매개변수 추출
useNavigate() 프로그래밍 방식으로 라우트 이동
useLocation() 현재 URL 정보와 상태 접근
useSearchParams() URL 쿼리 매개변수 접근 및 수정
useMatch(pattern) 현재 URL이 지정한 패턴과 일치하는지 확인
useRoutes(routes) 객체 구조로 라우트 정의

실제 프로젝트 구조 예시

실제 프로젝트에서는 다음과 같은 디렉토리 구조로 라우팅을 구성할 수 있습니다:

src/
  ├── components/          # 공통 컴포넌트
  │   ├── Layout/
  │   ├── Navigation/
  │   └── ...
  ├── pages/               # 페이지 컴포넌트
  │   ├── Home/
  │   ├── About/
  │   ├── Products/
  │   ├── Dashboard/
  │   └── ...
  ├── routes/              # 라우팅 관련 설정
  │   ├── PrivateRoute.js  # 보호된 라우트 컴포넌트
  │   ├── PublicRoute.js   # 공개 라우트 컴포넌트
  │   └── index.js         # 메인 라우트 설정
  ├── App.js
  └── index.js

결론

React Router는 React 애플리케이션에서 페이지 이동과 URL 관리를 위한 강력한 도구입니다. 기본적인 라우팅에서부터 중첩 라우트, 동적 매개변수, 보호된 라우트 등 다양한 기능을 제공하여 복잡한 애플리케이션의 내비게이션 요구사항을 충족시킬 수 있습니다.

React Router를 활용하면 프로젝트의 구조를 더 명확하게 구성하고, 사용자 경험을 향상시킬 수 있습니다. 다음 단계로는 실제 백엔드 API와 연동하거나, 상태 관리 라이브러리(Redux, Context API 등)를 통합하여 더 복잡한 애플리케이션을 구축하는 방법을 학습하는 것이 좋습니다.

'Frameworks > React' 카테고리의 다른 글

Redux  (0) 2025.04.01
React 상태 관리  (0) 2025.04.01
React Router의 주요 기능 상세 설명  (0) 2025.04.01
React Router  (0) 2025.04.01
간단한 React 애플리케이션 예제  (0) 2025.04.01