> Frontend/React
TIL-2024.05.02 - React - 008. Router (react-router-dom)
Janku
2024. 5. 2. 15:18
질문
1. React 에서 페이지 이동 하는 방식이 궁금해
Router (react-router-dom@v6)
- react-router-dom을 통해 Router 기능을 활용가능
- react-router-dom은 버젼 6까지 나왔음으로, 공식 문서에서 해당 기능 파악 필요.
기본 예제
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/users" element={<Users />}>
<Route path=":userId" element={<UserDetails />} />
</Route>
</Routes>
</Router>
);
}
Parameter 사용
- 라우트 경로에 파라미터를 전달하여 동적인 페이지를 렌더링
예제
... 생략 ...
{/* Route Parameter > useParams Hook 을 사용해서 가져와야함. */}
<Route path="profile/:username" element={<Profile/>}></Route>
... 생략
import React from "react";
import NonUser from "./NonUser";
import {useParams} from "react-router-dom";
const data = {
heath: {
name: 'Heath Jann',
description: 'React 초보'
},
gildong: {
name: 'Gildong Hong',
description: '홍길동'
},
};
// react-router에서 useParams Hook을 통해서 parameter 가져옴
const Profile = (props) => {
let { username } = useParams();
const profile = data[username];
if (!profile) {
return <NonUser/>;
}
return (
<div>
<h3>{username}({profile?.name})</h3>
<p>{profile?.description}</p>
</div>
);
};
export default Profile;
Query 사용
- React Router v6에서는 useSearchParams 훅을 사용하여 쿼리 파라미터를 처리
예제
...생략...
{/* Route URL 쿼리 > useSearchParams Hooks 을 사용해서 가져옴*/}
<Route path="info" element={<Info/>}></Route>
...생략...
import React from "react";
import { useSearchParams } from 'react-router-dom';
const Info = () => {
// 직접적으로 location 프로퍼티에 접근하는 대신에, useSearchParams 훅을 사용하여 쿼리 파라미터에 접근해야함 (@react-router v6)
const [searchParams] = useSearchParams();
const query = searchParams.get('detail');
return (
<div>
<h1>Info</h1>
<p>Info of: {query}</p>
</div>
);
};
export default Info;
서브라우팅
- 라우트 경로에 다른 라우트 사용
예제
{/* 서브라우터 사용 */}
<Route path="about" >
<Route index element={<About/>}></Route>
<Route path="about-us" element={<AboutUs/>}></Route>
</Route>
네비게이팅
- 프로그래밍 방식으로 라우팅을 수행하는 데 사용
예제
import React from "react";
import {useHistory, useNavigate} from 'react-router-dom'; // 설치한 패키지
const HistorySample = () => {
const navigate = useNavigate();
const goHome = () => {
navigate('/');
};
const goBack = () => {
navigate(-1); // Navigates back in history
};
const goForward = () => {
navigate(1); // Navigates forward in history
};
const goToAboutPage = () => {
navigate('/about');
};
return (
<div>
<h1>History Page</h1>
<button onClick={goHome}>Go Home</button>
<button onClick={goBack}>Go Back</button>
<button onClick={goForward}>Go Forward</button>
<button onClick={goToAboutPage}>Go to About Page</button>
</div>
);
}
export default HistorySample;
추가 확인해야되는 내용
https://reactrouter.com/en/6.23.0/start/tutorial
Tutorial v6.23.0 | React Router
reactrouter.com
답변
1. React 에서 페이지 이동 하는 방식이 궁금해
- Router (react-router-dom)을 통해 페이지 이동
- v6가 되면서 변화가 되어서, 공식 문서 확인 필요