정지용
기술스택 목록
프론트엔드

React Router

프로젝트 2에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

React 애플리케이션에서 페이지 간 이동과 URL 기반 렌더링을 관리하는 라이브러리

React Router는 싱글 페이지 애플리케이션(SPA)에서 URL 경로에 따라 다른 컴포넌트를 렌더링할 수 있게 해주는 클라이언트 사이드 라우팅 라이브러리입니다. 전통적인 멀티 페이지 웹사이트처럼 URL이 바뀌어도 페이지 전체를 새로고침하지 않고, JavaScript로 화면 일부만 교체하여 빠른 사용자 경험을 제공합니다. React 공식 라이브러리는 아니지만 React 생태계에서 사실상 표준으로 사용되며, 동적 라우팅과 중첩 레이아웃을 선언적으로 구성할 수 있습니다.

이럴 때 사용합니다

  • React로 여러 페이지를 가진 SPA를 만들 때
  • URL 경로에 따라 다른 화면을 보여주고 브라우저 히스토리를 관리해야 할 때
  • 로그인, 대시보드, 설정 등 페이지별로 구분된 UI 구조가 필요할 때
  • 공통 레이아웃을 유지하면서 일부 영역만 바뀌는 중첩 구조를 만들 때

핵심 개념

Route
특정 URL 경로와 그에 대응하는 컴포넌트를 매핑하는 단위입니다. 경로 패턴과 렌더링할 컴포넌트를 정의합니다.
Router
라우팅 기능을 제공하는 최상위 컨텍스트 컴포넌트입니다. BrowserRouter, HashRouter 등 환경에 따라 다른 구현체를 선택할 수 있습니다.
Link
페이지 새로고침 없이 URL을 변경하고 다른 라우트로 이동하게 해주는 컴포넌트입니다. HTML의 <a> 태그를 대체하여 SPA 내비게이션을 구현합니다.
Nested Routes
라우트 안에 또 다른 라우트를 정의하여 레이아웃과 하위 페이지를 계층적으로 구성하는 패턴입니다. 공통 레이아웃을 유지하면서 일부 영역만 교체할 수 있습니다.
Dynamic Segment
URL 경로에 변수를 포함시키는 기능으로, /user/:id 같은 패턴으로 동적인 경로를 정의합니다. useParams 같은 훅으로 경로 파라미터 값을 읽을 수 있습니다.
Navigation Hook
useNavigate, useLocation 등 라우팅 상태를 읽거나 프로그래밍 방식으로 페이지를 이동할 수 있게 해주는 React Hook들입니다.

기본적인 라우트 설정

세 개의 라우트를 정의하고, Link로 페이지 간 이동을 구현한 예시입니다. /user/:id는 동적 경로로 useParams를 통해 파라미터를 읽습니다.

JavaScript
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';

function App() {
  return (
    <BrowserRouter>
      <nav>
        <Link to="/">홈</Link>
        <Link to="/about">소개</Link>
        <Link to="/user/123">사용자</Link>
      </nav>

      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="/user/:id" element={<User />} />
      </Routes>
    </BrowserRouter>
  );
}

function User() {
  const { id } = useParams(); // URL에서 :id 값 추출
  return <div>사용자 ID: {id}</div>;
}

처음 쓸 때 흔한 함정

  • Link 대신 <a> 태그를 쓰면 페이지가 새로고침되어 SPA의 장점이 사라집니다
  • Route를 Routes로 감싸지 않으면 라우트 매칭이 제대로 동작하지 않습니다
  • 중첩 라우트 사용 시 부모 경로에 Outlet을 배치해야 자식 컴포넌트가 렌더링됩니다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.