리액트
리액트 라우터 사용하기
효ㄷi
2024. 6. 19. 21:24
리액트 라우터
리액트는 웹페이지를 새로고침 하지 않고도 화면이 바뀌는 싱글 페이지 애플리케이션 (=SPA)를 만들 수 있다. 그래서 페이지 이동이 빠르고 부드럽게 느껴진다.
리액트 라우터 돔을 설치하는 방법은 먼저,
yarn add react-router-dom
터미널에 입력해 설치한다.
// 1. 필요한 것들 가져오기
import { BrowserRouter, Route, Routes } from "react-router-dom";
function App() {
return (
// 2. BrowserRouter로 감싸기
<BrowserRouter>
{/* 3. Routes로 감싸기 */}
<Routes>
{/* 4. Route로 경로 설정 */}
<Route path="/" element={<div>메인페이지</div>} />
<Route path="/products" element={<div>상품리스트</div>} />
<Route path="/products/1" element={<div>상품1번 페이지</div>} />
</Routes>
</BrowserRouter>
);
}
export default App;
그리고 리액트 라우터 돔에서 필요한 것들을 가져오고, 페이지를 이동할 수 있도록 앱 전체를 브라우저 라우터로 감싼다.
또 이 라우트들을 그룹으로 감싸고, 각 경로에 어떤 컴포넌트를 보여줄지 Route로 경로 설정을 한다.
그리고 App.jsx 파일에 페이지를 연결한다.
import { BrowserRouter, Route, Routes } from "react-router-dom";
import Main from "./pages/Main";
import Products from "./pages/Products";
import Product from "./pages/Product";
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Main />} />
<Route path="/products" element={<Products />} />
<Route path="/products/1" element={<Product />} />
</Routes>
</BrowserRouter>
);
}
export default App;
이제 페이지를 이동하고 싶다. 그러면 Link나 navigate를 사용하면 되는데 무슨 차이가 있느냐 하면
1. Link
a 태그처럼 동작하지만 새로고침 하지 않고 페이지를 이동할 수 있다.
2. useNavigate
a 태그 없이 이동할 수 있다. 약간 추가적으로 실행할 로직, 코드가 있다거나 하면 네비게이트를 쓰라고 하셨던 걸로 기억
그럼 상세 페이지는 어떻게 이동을 하느냐...
useParams 훅을 이용해 url에서 상품 id를 가져오면 된다.
여러 제품의 상세 페이지를 만들 때 매번 새로운 라우터를 추가하는 것은 번거로우니껜,,,
<Route path="/products/:id" element={<Product />} />
이렇게 만들고,
import { useParams } from "react-router-dom";
export default function Product() {
const { id } = useParams();
이렇게 가져오면 된다는 얘기!
만약 products/1로 이동한다면 id는 1이 된다.