리액트 라우터 돔 설치
npm i react-router-dom
Java
복사
프로젝트 생성
App.js로 가보자.
파일 만들 때 대문자로 만들어야 된다.
이렇게 만들어 보자.
App.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;
Java
복사
페이지 만들기
src 내부에 페이지를 두개 만들어보자.
내부에는 이렇게 간단하게 만든다.
About도 만들자.
임포트 하기
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>
<div>
<Link to="/">홈</Link>
<Link to="/about">소개</Link>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</div>
</BrowserRouter>
);
}
export default App;
Java
복사
하이퍼 링크가 아니라, 페이지가 리로딩 되는 경우가 아니라, 내부에 그림이 다시 그려지는 것.
location href 만들기
앱 파일 만들기 App.js
Home.js 생성
navigate를 사용해서 버튼에 링크를 달 수 있다.
info.js 생성
App에도 추가.
:id 로 동적 변수를 바인딩 할 수있다.
info.js 는 userParam으로 구조분해 할당 할 수 있다.
about.js 버튼 만들기
여기 버튼은 moveInfo라고 하자
1212 값을 들고 온것을 확인
import { BrowserRouter, Route, Routes } from "react-router-dom";
import "./App.css";
import Nav from "./components/Nav";
import About from "./page/About";
import Home from "./page/Home";
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;
Java
복사
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;
Java
복사
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;
Java
복사
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;
Java
복사
쿼리 스트링 연습
두번째 방
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;
Java
복사
import React from "react";
import { useSearchParams } from "react-router-dom";
function List(props) {
const [searchParams, setSearchParams] = useSearchParams();
let page = searchParams.get("page");
// 두번째 방법
//const navigate = useNavigate();
function next() {
// 쿼리스트링 값이 변경되면서 화면 새로 불러짐
setSearchParams({ page: Number(page) + 1 });
//let newPage = Number(page) + 1;
//navigate("/list?page=" + newPage);
}
console.log("화면 새로 불러짐");
return (
<div>
<h1>List page : {page}</h1>
<button onClick={next}>다음페이지</button>
</div>
);
}
export default List;
Java
복사