[React] 라우터(Router)

류재성's avatar
Jul 06, 2024
[React] 라우터(Router)
 

1. react-router-dom 설치

💡
react-router-dom은 React 애플리케이션에서 클라이언트 사이드 라우팅을 구현하는 데 사용되는 라이브러리이다. 이를 통해 사용자는 브라우저의 주소창 URL을 변경함으로써 서로 다른 페이지나 컴포넌트로 이동할 수 있따. react-router-dom은 싱글 페이지 애플리케이션(SPA)에서 라우팅을 처리하는 데 매우 유용하다.
 
 
 
nav/Rounter.js
import React from 'react'; import { BrowserRouter, Route, Routes } from 'react-router-dom'; function Router() { return ( <BrowserRouter> <Routes> <Route path="/" element={} /> <Route path="/about" element={} /> </Routes> </BrowserRouter> ); } export default Router;
 
Home.js
import React from 'react'; function Home(props) { return ( <div> <h1>Home</h1> </div> ); } export default Home;
 
About.js
import React from 'react'; function About(props) { return ( <div> <h1>About</h1> </div> ); } export default About;<h1>About</h1>
 
라우터할 페이지를 만든다.
 
 

2. 페이지 연결하기

 
App.js
import { BrowserRouter, Link, Route, Routes } from "react-router-dom"; import "./App.css"; import About from "./page/About"; import Home from "./page/Home"; function App() { return ( <BrowserRouter> <Link to="/">홈</Link> <Link to="/about">소개</Link> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> </Routes> </BrowserRouter> ); } export default App;
💡
Link 컴포넌트를 사용해 네비게이트 주소를 생성한다. 그리고 Routes 를 활용해 네비게이터 주소에 해당하는 경로를 연결한다.
 
Home.js
import React from "react"; import { useNavigate } from "react-router-dom"; function Home(props) { const navigate = useNavigate(); function moveAbout() { navigate("/about"); } return ( <div> <h1>Home</h1> <button onClick={moveAbout}>소개페이지이동</button> </div> ); } export default Home;
 
💡
useNavigate 는 React Router 에서 제공하는 훅(hook)으로, 컴포넌트 내에서 페이지 이동을 도와준다. Home 페이지 버튼을 생성 후 moveAbout() 함수를 연결한다. moveAbout() 가 실행되면 /about 주소로 연결된다.
 
notion image
 
버튼을 누르면 /about 으로 이동한다.
 

3. url 매개변수 가져오기

 
components/Nav.js
import React from 'react'; import { Link } from 'react-router-dom'; function Nav(props) { return ( <div> <Link to="/">홈</Link> <Link to="/about">소개</Link> </div> ); } export default Nav;
 
App.js 에 있던 link 를 분리한다.
 
page/Info.js
import React from 'react'; import { useParams } from 'react-router-dom'; function Info(props) { const {id} = useParams(); return ( <div> <h1>Info 번호 : {id}</h1> </div> ); } export default Info;
 
새로운 Info.js 를 만든다.
 
💡
useParams 훅은 현재 URL 경로에서 동적 매개변수를 추출하는 데 사용된다. 위의 코드는 id 매개변수를 가져온다.
 
page/About.js
import React from 'react'; import { useNavigate } from 'react-router-dom'; function About(props) { const navigate = useNavigate(); function moveInfo(){ navigate("/info/1212"); } return ( <div> <h1>About</h1> <button onClick={moveInfo}>유저정보페이지이동</button> </div> ); } export default About;
 
💡
About.js 페이지에서 navigate 설정을 한다. navigate("/info/1212"); 여기서 id 값 1212 를 넘긴다.
 
App.js
import { BrowserRouter, Route, Routes } from "react-router-dom"; import "./App.css"; import About from "./page/About"; import Home from "./page/Home"; import Nav from "./components/Nav"; import Info from "./page/Info"; function App() { return ( <BrowserRouter> <Nav /> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/info/:id" element={<Info />} /> </Routes> </BrowserRouter> ); } export default App;
 
💡
App.js 에서 /info/:id 경로를 연결한다. :id 를 통해 매개변수를 전달한다.
 
notion image
 

4. 쿼리스트링

 
page/Info.js
import React from 'react'; import { useNavigate, useParams } from 'react-router-dom'; function Info(props) { const {id} = useParams(); const navigate = useNavigate(); function moveList(){ navigate(`/list?page=0`) } return ( <div> <h1>Info 번호 : {id}</h1> <button onClick={moveList}>리스트페이지이동</button> </div> ); } export default Info;
 
버튼을 누르면 List.js 로 이동하도록 한다.
 
page/List.js
import React from 'react'; import { useSearchParams } from 'react-router-dom'; function List(props) { const [searchParams,setSearchParams] = useSearchParams(); let page = searchParams.get("page"); // 쿼리스트링 객체 가져옴 function next(){ setSearchParams({page:Number(page)+1}); // setSearchParams 를 사용해 업데이 } return ( <div> <h1>List page :{page}</h1> <button onClick={next}>다음페이지</button> </div> ); } export default List;
 
💡
useSearchParams는 react-router-dom 라이브러리에서 제공하는 훅(Hook)으로, URL의 쿼리 문자열을 읽고 업데이트하는 데 사용된다.
searchParams : URL의 쿼리 문자열을 나타내는 객체이다. 이 객체를 사용하여 특정 쿼리 매개변수의 값을 가져올 수 있다.
setSearchParams : 쿼리 문자열을 업데이트하는 함수. 이를 통해 쿼리 매개변수를 변경할 수 있다.
 
App.js
import { BrowserRouter, Route, Routes } from "react-router-dom"; import "./App.css"; import About from "./page/About"; import Home from "./page/Home"; import Nav from "./components/Nav"; import Info from "./page/Info"; import List from "./page/List"; function App() { return ( <BrowserRouter> <Nav /> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/info/:id" element={<Info />} /> <Route path="/list" element={<List />}/> </Routes> </BrowserRouter> ); } export default App;
 
/list 주소를 추가한다.
 
notion image
 
Share article
RSSPowered by inblog