React-router를 사용하여 다른 페이지로 이동하면, 기본적으로 이전 페이지에서 스크롤 위치를 기억하고 해당 위치 그대로 스크롤이 적용된다.
그러나 이전 페이지의 스크롤 위치를 무시하고 페이지 스크롤 위치를 상단으로 초기화하려면 다음과 같은 방법을 사용하여 해결할 수 있다.
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
const ScrollToTop = () => {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
};
export default ScrollToTop;
function App() {
return (
<BrowserRouter>
<ScrollToTop /> //Router 최상단에 적용
<Nav />
<Routes>
<Route path="/" element={<Main />}></Route>
<Route path="/login" element={<Login />}></Route>
<Route path="/cart" element={<Cart />}></Route>
<Route path="/orders" element={<Order />}></Route>
<Route path="/shop" element={<Shop />}></Route>
<Route path="/shop/:id" element={<ShopDetail />}></Route>
</Routes>
<Footer />
</BrowserRouter>
);
}