라우터에 대한 개념 정립과 a 태그, Link 컴포넌트, useNavigate 구현 방법에 대한 정리를 목표로 작성했습니다.
Login.html, Main.html
페이지 수만큼 html 파일이 존재html
의 개수는 1개 > SPA라우팅(Routing)
이란 url(다른 경로)에 따른 다른 view(화면)을 보여주는 것 입니다.React-router
는 리액트의 라우팅 기능을 위해 가장 많이 사용되는 라이브러리 입니다.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'));
index.js
를 수정해야합니다.3-1. Route 이동하기
<Link>
컴포넌트 사용하는 방법import React from "react";
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
export default Login;
<useNavigate>
로 구현하는 방법import React from "react";
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate();
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;
useNavigate
훅을 실행하면 페이지 이동을 할 수 있게 해주는 함수를 반환합니다. 해당 함수를 navigate
라는 변수에 저장합니다.navigate
의 인자로 Router.js
에서 설정한 path를 넘겨주면, 해당 경로로 이동할 수 있습니다.<a>, <Link>, <useNavigate>
활용법<a>
<Link>
<useNavigate>