동적 경로란 페이지가 렌더링 될 때, 동적으로 바뀌고있는 url을 말한다. 이것도 두가징 방법이 있다.
1. URL Parameter
위 이미지 같이 /뒤에 아이템의 id를 명시하는 것이다. 이때는
import "./App.css";
import { Route, Routes, Link } from "react-router-dom";
import Home from "./pages/Home";
import New from "./pages/New";
import Diary from "./pages/Diary";
import NotFound from "./pages/NotFound";
function App() {
return (
<>
<div>
<Link to={"/"}>Home</Link>
<Link to={"/new"}>New</Link>
<Link to={"/diary"}>Diary</Link>
</div>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/new" element={<New />} />
//이렇게 reactRoute에 path에다가 /:이동할값이름 을 설정해 준 뒤
<Route path="/diary/:id" element={<Diary />} />
<Route path="*" element={<NotFound />} />
</Routes>
</>
);
}
export default App;
// useParams를 import해준 다음
import { useParams } from "react-router-dom";
//useParams 객체를 변수에 담아 준 뒤, params.받을값이름으로 사용해 준다.
const Diary = () => {
const params = useParams();
return <div>{params.id}번 페이지 입니다.</div>;
};
export default Diary;
Query string
쿼리 스트링을 사용 할 때는 우리가 흔히 아는 get방식이다. url뒤에 /?변수명=값 의 식으로 전달하게 되는데 이거는 route에 뭔가를 해 줄 필요도 없다.
//useSearchParams를 호출한 다음
import { useSearchParams } from "react-router-dom";
const Home = () => {
//아래처럼 배열에 넣어준뒤 그냥 params.get(변수명)
//을 해주면 된다.
const [params, setParams] = useSearchParams();
console.log(params.get("value"));
return <div>Home</div>;
};
export default Home;