반응형
아래와 같이 로그인(리액트 라우터의 현재 링크 = http://localhost:3xxx/login)이 있다고 가정하자.
<Link to="/login">
로그인
</Link>
아이디를 입력한 상태에서 로그인 링크를 누르면 현재의 라우터이기 때문에 새로고침이 발생하지 않는다.
해결 방법은 react router의 useLocation과 useEffect를 이용하여 강제로 새로고침하도록 한다.
useLocation은 현재 페이지에 대한 정보를 알려준다.
import { Route, Link, Routes, useLocation } from "react-router-dom";
...
let currentPath = "";
function App() {
let location = useLocation();
useEffect(() => {
if(currentPath === location.pathname) window.location.reload();
currentPath = location.pathname;
}, [location]);
...
}
export default App;
최초로 페이지로 들어갈 경우 currentPath는 "" 이고, location.pathname(/login)이 된다.
그리고 라우터로 로그인을 다시 클릭하면
currentPath와 location.pathname이 같아서 새로고침 reload가 발생하게 된다.
반응형
'개발 > React' 카테고리의 다른 글
리액트 - WebGL로 빌드된 유니티 전체 화면으로 변경하기 (Entering Fullscreen Unity WebGL in React) (0) | 2023.03.25 |
---|---|
리액트 CSS - 배경 이미지 꽉 채우기 (0) | 2022.06.19 |
리액트 - jsconfig.json로 component import 자동완성 (0) | 2022.03.24 |
리액트 - useRef를 이용하여 타이머 만들기 (0) | 2022.03.23 |
로그인 폼 만들기 - useReducer로 Input 관리 (0) | 2022.03.20 |
댓글