라우팅(Rounting)이란 다른 경로(url 주소)에 따라 다른 View(화면)을 보여주는 것이다.
React-router
는 리액트의 라우팅 기능을 위해 가장 많이 사용 되는 라이브러리이다.
npm install react-router-dom --save
--save
: package.json에 설치된 패키지의 이름과 버전 정보를 업데이트한다.import React from "react";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Nav from "./components/Nav/Nav";
import Footer from "./components/Footer/Footer";
import Login from "./pages/Login/Login";
import Signup from "./pages/Signup/Signup";
import Main from "./pages/Main/Main";
function Router() {
return (
<BrowserRouter> // 라우터 기능 제공
<Nav />
<Routes>
<Route path="/" element={<Login />} />
<Route path="/signup" element={<Signup />} />
<Route path="/main" element={<Main />} />
</Routes>
<Footer />
</BrowserRouter>
);
}
export default Router;
ReactDOM.render(<Router />, document.getElementById('root'));
<Link />
, useNavigate
<Link />
: 클릭 시 바로 이동하는 로직 구현 시에 사용한다.useNavigate
: 페이지 전환 시 추가로 처리해야 하는 로직이 있는 경우 useNavigate 훅을 활용하여 구현한다.<Link />
컴포넌트import React from "react";
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
export default Login;
<Link />
컴포넌트는 DOM에서 <a>
태그로 변환(Compile)된다.<a>
태그와 마찬가지로 <Link />
컴포넌트도 지정한 경로로 바로 이동시켜주는 기능을 한다.a 태그와 Link 컴포넌트의 차이점
- a 태그: 페이지를 바꿀 때마다 계속 서버에 요청한다. MPA 방식으로 동작한다.
※ 외부 사이트로 연결할 때는 a 태그가 필요하다.- Link 컴포넌트: 최초 1번만 요청하고 이후 페이지를 바꿀 때 서버에 요청하지 않는다. 리렌더링해야 할 부분만 다시 리렌더링한다. SPA 구현을 위해 필요하다.
import React from "react";
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate(); // useNavigate 함수의 리턴값을 navigate 변수에 담음
const goToMain = () => {
navigate("/main");
};
// 실제 활용 예시
// const goToMain = () => {
// if(response.message === "valid user"){
// navigate('/main');
// } else {
// alert("가입된 회원이 아닙니다. 회원가입을 먼저 해주세요.")
// navigate('/signup');
// }
// }
return (
<div>
<button className="loginBtn" onClick={goToMain}>
로그인
</button>
</div>
);
}
export default Login;