SPA(Single Page Application)에서 화면 전환 시 새로고침 없이 컴포넌트만 교체할 수 있도록 지원하는 라이브러리
npm i react-router-dom
보통 main.jsx에서 전체 앱을 로 감싸야 라우터 기능이 동작
import { BrowserRouter } from "react-router-dom";
import App from "./App.jsx";
createRoot(document.getElementById("root")).render(
<BrowserRouter>
<App />
</BrowserRouter>
);
App.jsx에서 가상 URL ↔ 컴포넌트 연결
import { Routes, Route } from "react-router-dom";
import Home from "./Home.jsx";
import About from "./About.jsx";
import NotFound from "./NotFound.jsx";
export default function App() {
return (
<Routes>
{/* 기본 라우팅 */}
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
{/* 예외 처리 (없는 주소) */}
<Route path="*" element={<NotFound />} />
{/* Path 매개변수 방식 */}
<Route path="/user/:userId" element={<UserDetail />} />
</Routes>
);
}
<a> 대신 <Link> 사용 → 새로고침 없이 이동
import { Link } from "react-router-dom";
<Link to="/about">About 페이지</Link>
useNavigate() Hook 사용
import { useNavigate } from "react-router-dom";
const navigate = useNavigate();
navigate("/about");
import { useSearchParams } from "react-router-dom";
const [searchParams] = useSearchParams();
const keyword = searchParams.get("q"); // /search?q=리액트
import { useParams } from "react-router-dom";
const { userId } = useParams(); // /user/10 → userId = 10
