본문 바로가기
WEB

리액트 스크롤 상단으로 위치 시키기 리액트 라우터

by Ele(단단) 2023. 3. 15.
반응형

리액트 스크롤 상단으로 위치 시키기, 리액트 라우터

 

 😨 스크롤의 위치가?!

 

리액트 라우터를 사용하는 경우 이전 페이지에서 스크롤이 내려가 있는 상태에서 다른페이지를 불러 왔을 때, 스크롤의 위치가 이전 페이지와 동일한 현상을 경험 할 수 있다. 

 

문서에서 scroll-restoration이라고 소개한 코드가 있다. 

 

import { useEffect } from "react";
import { useLocation } from "react-router-dom";

export default function ScrollToTop() {
  const { pathname } = useLocation();

  useEffect(() => {
    window.scrollTo(0, 0);
  }, [pathname]);

  return null;
}

 

함수형으로 된 코드를 가져왔다.

 

hook을 사용하여 pathname(경로)가 바뀌는 것을 감지하면 window 객체의 속성으로 스크롤을 최상단으로 옮기는 코드다.

ScrollToTop.tsx라는 파일을 만들고<BrowserRoute><ScrollToTop /></BrowserRoute> 브라우져 라우터 안에 위치 시키면 작동이 된다고 한다.

 

다만, 기능이 예상한 대로 작동 하지 않을 수 있다. 나의 경우에는 window 객체가 아니라, main 태그에서 스크롤이 생긴 경우라서 코드가 조금 다르다.

 

처음에 문제되는 상황을 보고 아주 쉽게 해결 할 수 있을 거라고 생각했다. 아마 아래의 블로그가 없었더라면 해결을 못했을 수도 있다는 생각이 든다. 

 

반응형

'WEB' 카테고리의 다른 글

리액트 ref react ref 사용법 예제 예시 No Rendering  (0) 2023.03.21
버블링 막기 event.stopPropagation() 이벤트  (0) 2023.03.21
JavaScript 기초  (0) 2021.07.08

댓글