“React는 SPA방식을 따르면서 CSR로 페이지를 렌더링 한다”
npm install react-router-dom@6
- SPA구조에서 전체적인 라우팅 구조를 잡는데 사용
import "./App.css";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Home from "./pages/Home";
import New from "./pages/New";
import Edit from "./pages/Edit";
import Diary from "./pages/Diary";
function App() {
return (
<BrowserRouter>
<div className="App">
<h2>App.js</h2>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/new" element={<New />} />
<Route path="/edit" element={<Edit />} />
<Route path="/diary/" element={<Diary />} />
</Routes>
</div>
</BrowserRouter>
);
}
export default App;
- 특정 주소로 넘어갈 수 있게 해줌
import {Link} from "react-router-dom";
const Router = () => {
return (
<>
<Link to={"/"}>HOME</Link>
<br />
<Link to={"/diary"}>DIARY</Link>
<br />
<Link to={"/new"}>NEW</Link>
<br />
<Link to={"/edit"}>EDIT</Link>
<br />
</>
);
};
App.js
<Route path="/diary/:id" element={<Diary />} />
Diary.js
import {useParams} from "react-router-dom";
const Diary = () => {
const {id} = useParams();
//...생략
}
import {useSearchParams} from "react-router-dom";
const Edit = () => {
const [searchParams, setSearchParams] = useSearchParams();
const id = searchParams.get("id");
console.log("id:", id);
const mode = searchParams.get("mode");
console.log("mode:", mode);
//...생략
→ /edit?id=10&mode=dark
import {useNavigate} from "react-router-dom";
const navigate = useNavigate();
//...생략
<button
onClick = {()=> {
navigate("/home");
}}
> HOME으로 가기
</button>
//지정한 페이지로 이동
<button
onClick={() => {
navigate(-1);
}}
> 뒤로가기
</button>
//한페이지 뒤로가기