리엑트 공부를 하던 중 페이지 이동을 도와주는 Link와 useNavigate를 알게되었는데, 둘의 차이를 명확히 모르겠고 html의 a 태그와는 무엇이 어떻게 다른지 궁금해서 정리해보게 되었다.
// 라이브러리 설치
npm install react-router-dom
// import
import { useNavigate } from 'react-router-dom';
// Router.j
function Router() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/signup" element={<Signup />} />
<Route path="/main" element={<Main />} />
</Routes>
</BrowserRouter>
);
}
export default Router;
// Login.js
import React from "react";
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
export default Login;
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate();
const goMain = () => {
navigate("/main");
};
return (
<div>
<button className="loginBtn" onClick={goMain}>
login
</button>
</div>
);
}
<a> 태그<a href=#>는 전체 페이지를 재렌더링 시킴. (새로고침이 일어남)<Link />는 필요한 부분만 재렌더링하고 나머지 부분은 그대로 유지함.*react-router 버전이 5에서 6으로 바뀌면서 UseHistory 가 UseNavigate로 바뀌었다. 기능은 거의 동일.
ex)
로그인 버튼 클릭 👉🏻 회원가입이 되어 있지 않은 사용자 👉🏻 SignUp 페이지로 이동
로그인 버튼 클릭 👉🏻 회원가입이 되어 있는 사용자 👉🏻 Main 페이지로 이동