
html 파일을 한 번만 받아오고 그 이후에는 필요한 데이터는 받아와서 렌더링
$ yarn add react-router-dom
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { BrowserRouter } from "react-router-dom";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
import { Routes, Route } from "react-router-dom";
import Home from "./pages/Home";
import BoardsList from "./pages/BoardsList";
import Board from "./pages/Board";
function App() {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="/boards" element={<BoardsList />} />
<Route path="/boards/:id" element={<Board />} />
</Routes>
);
}
export default App;
import React from "react";
import { Link } from "react-router-dom";
const Home = () => {
return (
<>
<Link to="/boards">Boards</Link>
</>
);
};
export default Home;
앞/뒤로 이동 시킬 수 있다.
어떤 조건을 만족했을 때 페이지 이동을 시킬 수 있다.
state를 이용해 값을 전달할 수 있다.
ex) 클라이언트 상황에 따라 다른 페이지로 이동시켜야 할 수 있다.
import { Routes, Route } from "react-router-dom";
import Home from "./pages/Home";
import BoardsList from "./pages/BoardsList";
import Board from "./pages/Board";
import { useNavigate } from "react-router-dom";
function App() {
const navigate = useNavigate();
const goBack = () => {
navigate(-1);
};
const goBoards = () => {
navigate("/boards", {
state: { message: "여긴 게시판입니다." },
});
};
return (
<>
<header style={{ background: "lightgray", padding: 16, fontSize: 24 }}>
<button onClick={goBack}>뒤로가기</button>
<button onClick={goBoards}>게시글 목록</button>
</header>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/boards" element={<BoardsList />} />
<Route path="/boards/:id" element={<Board />} />
</Routes>
</>
);
}
export default App;
boards/1
URL Parameter를 어떻게 가져올까?
import React from "react";
import { useParams } from "react-router-dom";
const Board = () => {
const params = useParams();
console.log(params);
return <div>hi</div>;
};
export default Board;

boards?detail=true
QueryString을 어떻게 가져올까?
import React from "react";
import { useLocation } from "react-router-dom";
const BoardsList = () => {
const query = useLocation();
console.log(query);
return <div>boardsList</div>;
};
export default BoardsList;
