리액트의 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#section1
Pathname: /about
Search: ?name=Shine
Hash: #section1
import 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=John
Name: John
state
를 사용한 데이터 전달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;