페이지 전환을 위해 사용하는 두가지 방법의 차이점에 대해 알아보자!
설치
npm install react-router-dom --save
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
a태그
와 Link태그
의 차이
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate();
const goToMain = () => {
if(response.message === "valid user"){
navigate('/main');
} else {
alert("가입된 회원이 아닙니다. 회원가입을 먼저 해주세요.")
navigate('/signup');
}
}
return (
<button className="loginBtn" onClick={goToMain}>
로그인
</button>
Link
와 다른점은 함수 호출을 통해 페이지를 전환시켜주기 때문에 특정조건을 충족할 경우에 페이지를 이동할 수 있다🍄 Link의 또 다른 기능
Link는 to로 단순히 경로만 보내주는 것이 아니라 한 화면에서 다른 화면으로
string 또는 state같은 정보들을 보낼 수 있다//v5 <Link to={{ pathname:"/home", search:"?sort=name", state:{ name: coin.name } }} />
react-router-dom V6부터는 state가 to로 부터 분리되었다
//v6 <Link to={`${coin.id}`} state={{ name: coin.name }} />
보낸 정보는 useLocation() 훅을 이용해서 받아올 수 있다