React Router 실전 사용법 – 초보자도 쉽게 따라하는 완벽 가이드
1. 도입 – 학습 목표 및 필요성
🔗 관련 에러 해결 가이드
React Router 실전 사용법을 마스터하면 단일 페이지 애플리케이션(SPA)에서 여러 페이지를 구현하고 사용자 경험을 크게 향상시킬 수 있습니다. 현대 웹 개발에서 React Router는 필수적인 라이브러리로, 페이지 전환 시 새로고침 없이 부드러운 네비게이션을 제공합니다. 이 튜토리얼에서는 기본 라우팅부터 동적 라우팅, 중첩 라우팅, 프로그래매틱 네비게이션까지 실무에서 자주 사용하는 핵심 기능들을 단계별로 학습합니다. 초보자도 쉽게 따라할 수 있도록 실제 코드 예제와 함께 상세히 설명하며, 이 가이드를 완료하면 실전 프로젝트에 바로 적용할 수 있는 실력을 갖추게 됩니다.
2. 기본 개념 설명
React Router는 React 애플리케이션에서 라우팅 기능을 제공하는 표준 라이브러리입니다. 기본적으로 URL 경로와 컴포넌트를 매핑하여 사용자가 특정 URL에 접근할 때 해당하는 컴포넌트를 렌더링합니다. React Router v6는 이전 버전보다 간결하고 직관적인 API를 제공하며, 주요 개념은 다음과 같습니다. 첫째, BrowserRouter는 HTML5 히스토리 API를 사용하여 라우팅을 관리하는 최상위 컴포넌트입니다. 둘째, Routes와 Route는 URL 경로와 컴포넌트를 연결하는 핵심 요소입니다. 셋째, Link와 NavLink는 페이지 이동을 위한 컴포넌트로 HTML의 a 태그와 유사하지만 새로고침을 발생시키지 않습니다. 넷째, useNavigate, useParams, useLocation 같은 훅들은 라우팅 관련 정보에 접근하고 프로그래매틱하게 네비게이션을 제어할 수 있게 해줍니다. 다섯째, Outlet은 중첩 라우팅을 구현할 때 자식 라우트를 렌더링하는 위치를 지정합니다. 이러한 개념들을 이해하면 React Router 실전 사용법의 기초를 확실히 다질 수 있습니다.
3. 단계별 구현 가이드
3.1 설치 및 초기 설정
먼저 React 프로젝트를 생성하고 React Router를 설치합니다. 터미널에서 다음 명령어를 실행하세요:
npx create-react-app my-router-app
cd my-router-app
npm install react-router-dom
설치가 완료되면 src/index.js 또는 src/main.jsx 파일에서 BrowserRouter로 App 컴포넌트를 감싸줍니다. 이는 애플리케이션 전체에서 라우팅 기능을 사용할 수 있도록 설정하는 첫 번째 단계입니다.
3.2 기본 라우트 설정
App.js 파일에서 기본적인 라우팅 구조를 만듭니다. Routes 컴포넌트 안에 여러 Route를 정의하여 각 경로에 맞는 컴포넌트를 연결합니다. path 속성에는 URL 경로를, element 속성에는 렌더링할 컴포넌트를 지정합니다. 홈페이지는 경로를 ‘/’로 설정하고, 다른 페이지들은 ‘/about’, ‘/contact’ 같은 경로를 사용합니다. 404 페이지를 위해서는 path를 ‘*’로 설정하여 정의되지 않은 모든 경로를 처리할 수 있습니다.
3.3 네비게이션 구현
사용자가 페이지 간 이동할 수 있도록 네비게이션 메뉴를 만듭니다. Link 컴포넌트를 사용하여 to 속성에 이동할 경로를 지정합니다. NavLink는 Link의 확장 버전으로 현재 활성화된 링크에 스타일을 적용할 수 있어 네비게이션 바에 특히 유용합니다. className이나 style 속성에 함수를 전달하여 활성 상태를 확인하고 동적으로 스타일을 적용할 수 있습니다.
3.4 동적 라우팅
동적 라우팅은 URL 파라미터를 사용하여 하나의 라우트로 여러 페이지를 처리합니다. path에 ‘:id’와 같은 형태로 파라미터를 정의하고, 컴포넌트 내에서 useParams 훅을 사용하여 파라미터 값에 접근합니다. 예를 들어 블로그 게시글이나 상품 상세 페이지 같이 동일한 구조지만 다른 데이터를 보여주는 페이지에 적합합니다.
3.5 중첩 라우팅
중첩 라우팅은 부모 라우트 안에 자식 라우트를 정의하여 레이아웃을 공유하면서 내용만 변경할 수 있게 합니다. Route를 중첩하여 정의하고, 부모 컴포넌트에서 Outlet 컴포넌트를 사용하여 자식 라우트가 렌더링될 위치를 지정합니다. 대시보드나 관리자 페이지처럼 공통 레이아웃을 가진 여러 하위 페이지가 있을 때 매우 유용합니다.
3.6 프로그래매틱 네비게이션
useNavigate 훅을 사용하면 코드 내에서 프로그래매틱하게 페이지를 이동할 수 있습니다. 폼 제출 후, 로그인 성공 후, 또는 특정 조건이 충족되었을 때 자동으로 페이지를 전환하는 경우에 활용합니다. navigate 함수에 경로를 전달하거나 숫자를 전달하여 브라우저 히스토리를 앞뒤로 이동할 수도 있습니다.
4. 실제 코드 예제와 설명
다음은 React Router 실전 사용법을 보여주는 완전한 예제 코드입니다:
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
);
// src/App.js
import { Routes, Route, Link, NavLink } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
import Products from './pages/Products';
import ProductDetail from './pages/ProductDetail';
import NotFound from './pages/NotFound';
function App() {
return (
} />
} />
} />
} />
} />
);
}
export default App;
// src/pages/ProductDetail.js
import { useParams, useNavigate } from 'react-router-dom';
function ProductDetail() {
const { id } = useParams();
const navigate = useNavigate();
const handleGoBack = () => {
navigate('/products');
};
return (
제품 상세 페이지
제품 ID: {id}
);
}
export default ProductDetail;
이 예제는 기본 라우팅, 동적 라우팅, 네비게이션 스타일링, 프로그래매틱 네비게이션을 모두 포함하고 있어 실전에서 바로 활용할 수 있습니다.
5. 고급 활용 방법
5.1 Protected Routes (보호된 라우트)
로그인한 사용자만 접근할 수 있는 페이지를 만들 때는 Protected Route 패턴을 사용합니다. 고차 컴포넌트나 래퍼 컴포넌트를 만들어 인증 상태를 확인하고, 인증되지 않은 경우 로그인 페이지로 리다이렉트합니다. Navigate 컴포넌트를 사용하여 조건부 리다이렉션을 구현할 수 있습니다.
5.2 Lazy Loading
React.lazy와 Suspense를 React Router와 함께 사용하면 코드 스플리팅을 통해 초기 로딩 시간을 개선할 수 있습니다. 각 라우트 컴포넌트를 필요할 때만 로드하여 번들 크기를 줄이고 성능을 최적화합니다.
5.3 Search Parameters
useSearchParams 훅을 사용하면 URL 쿼리 스트링을 읽고 수정할 수 있습니다. 필터링, 정렬, 페이지네이션 같은 기능을 구현할 때 유용하며, URL을 통해 애플리케이션 상태를 공유할 수 있게 해줍니다.
5.4 Scroll Restoration
페이지 전환 시 스크롤 위치를 제어하려면 useLocation과 useEffect를 조합하여 라우트 변경 시 자동으로 최상단으로 스크롤되도록 구현할 수 있습니다.
6. 마무리 및 추가 학습 자료
이 튜토리얼을 통해 React Router 실전 사용법의 핵심 개념과 구현 방법을 학습했습니다. 기본 라우팅부터 동적 라우팅, 중첩 라우팅, 프로그래매틱 네비게이션까지 실무에서 필요한 모든 기능을 다뤘습니다. 더 깊이 있는 학습을 원한다면 공식 React Router 문서(reactrouter.com)를 참고하고, 실제 프로젝트에 적용하며 경험을 쌓아보세요. 데이터 로더, 액션, 폼 처리 같은 고급 기능들도 탐구해보시기 바랍니다. 이제 배운 내용을 바탕으로 자신만의 프로젝트를 만들어보세요. 실전 경험이 가장 좋은 학습 방법입니다!
📚 함께 읽으면 좋은 글
React 컴포넌트 설계 패턴 – 초보자도 쉽게 따라하는 완벽 가이드
📅 2025. 10. 29.
🎯 React 컴포넌트 설계 패턴
React Context API 마스터하기 – 초보자도 쉽게 따라하는 완벽 가이드
📅 2025. 10. 26.
🎯 React Context API 마스터하기
React Testing Library로 테스트 작성하기 – 초보자도 쉽게 따라하는 완벽 가이드
📅 2025. 10. 25.
🎯 React Testing Library로 테스트 작성하기
React Hooks 실전 활용 가이드 – 초보자도 쉽게 따라하는 완벽 가이드
📅 2025. 10. 23.
🎯 React Hooks 실전 활용 가이드
React 컴포넌트 설계 패턴 – 초보자도 쉽게 따라하는 완벽 가이드
📅 2025. 10. 23.
🎯 React 컴포넌트 설계 패턴
💡 위 글들을 통해 더 깊이 있는 정보를 얻어보세요!
📢 이 글이 도움되셨나요? 공유해주세요!
여러분의 공유 한 번이 더 많은 사람들에게 도움이 됩니다 ✨
🔥 공유할 때마다 블로그 성장에 큰 힘이 됩니다! 감사합니다 🙏
💬 여러분의 소중한 의견을 들려주세요!
이 글에서 가장 도움이 된 부분은 어떤 것인가요?
⭐ 모든 댓글은 24시간 내에 답변드리며, 여러분의 의견이 다른 독자들에게 큰 도움이 됩니다!
🎯 건설적인 의견과 경험 공유를 환영합니다 ✨
🔔 블로그 구독하고 최신 글을 받아보세요!
🌟 React 튜토리얼부터 다양한 실생활 정보까지!
매일 새로운 유용한 콘텐츠를 만나보세요 ✨
📧 RSS 구독 | 🔖 북마크 추가 | 📱 모바일 앱 알림 설정
지금 구독하고 놓치는 정보 없이 업데이트 받아보세요!