리액트의 react-router-dom은 SPA(Single Page Application)에서 라우팅을 쉽게 관리할 수 있게 하기 때문에 꼭 사용하는 라이브러리이다.
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const Home = () => <h1>홈 화면</h1>;
const About = () => <h1>상세 정보 화면</h1>;
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
};
export default App;
useParams는 URL에 포함된 동적 파라미터를 가져올 때 사용한다.
import React from 'react';
import { BrowserRouter, Routes, Route, useParams } from 'react-router-dom';
const User = () => {
// 현재 페이지에서 userId라는 param을 가져와 사용한다.
const { userId } = useParams();
return <h1>User ID: {userId}</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/user/:userId" element={<User />} />
</Routes>
</BrowserRouter>
);
};
export default App;
:userId처럼 경로에 동적 파라미터를 정의.useParams를 사용하여 userId 값을 가져옴.| 속성 | |
|---|---|
| pathname | 현재 경로 (예: /about 또는 /user/123) |
| search | URL의 쿼리 문자열 (예: ?name=Shine) |
| hash | URL의 해시 값 (예: #section1) |
| state | navigate로 데이터를 전달할 때 사용하는 상태 객체 |
| key | 특정 라우팅의 고유 키 (React Router가 내부적으로 사용) |
import React from 'react';
import { useLocation } from 'react-router-dom';
const ExampleLocation = () => {
const location = useLocation();
return (
<div>
<p>Pathname: {location.pathname}</p>
<p>Search: {location.search}</p>
<p>Hash: {location.hash}</p>
</div>
);
};
export default ExampleLocation;
http://localhost:3000/about?name=Shine#section1Pathname: /about
Search: ?name=Shine
Hash: #section1import React from 'react';
import { useLocation } from 'react-router-dom';
const QueryParams = () => {
const location = useLocation();
// 쿼리 문자열을 읽을 수 있다.
// location.search를 이용하기 위해서는 URLSearchParams를 사용한다.
const queryParams = new URLSearchParams(location.search);
return (
<div>
<h1>Query Parameters</h1>
<p>Name: {queryParams.get('name')}</p>
</div>
);
};
export default QueryParams;
http://localhost:3000?name=JohnName: Johnstate를 사용한 데이터 전달React Router에서 navigate로 페이지 이동 시, 추가 데이터를 state로 전달할 수 있다.
import React from 'react';
import { useNavigate } from 'react-router-dom';
const Home = () => {
const navigate = useNavigate();
const goToNextPage = () => {
navigate('/next-page', { state: { from: 'home-page', user: 'Shine' } });
};
return (
<div>
<button onClick={goToNextPage}>다음 페이지로 이동</button>
</div>
);
};
export default Home;
import React from 'react';
import { useLocation } from 'react-router-dom';
const NextPage = () => {
const location = useLocation();
const { from, user } = location.state || {};
return (
<div>
<p>From: {from}</p>
<p>User: {user}</p>
</div>
);
};
export default NextPage;