DEV_IN/React
νμ΄μ§ μ΄λ μ, μ€ν¬λ‘€ μλ¨ κ³ μ νκΈ°
λ€λΉμΉμ½λπ
2023. 2. 8. 02:54
- λ°©λ² 1 (μ»΄ν¬λνΈ λ³λ‘ μ μ©ν λ)
- src/util/useScrollTop.jsx
- μ μ©λ μ»΄ν¬λνΈ μ§μ μ νμ΄μ§ 맨 μλ‘ μ€ν¬λ‘€ν΄μ£Όλ 컀μ€ν ν
import { useEffect } from "react";
const useScrollTop = () => {
useEffect(() => {
if (window) window.scrollTo(0, 0);
}, []);
return;
};
export default useScrollTop;
import useScrollTop from "../util/useScrollTop";
const BlogDetails = () => {
useScrollTop();
return (
//μλ΅...
);
};
export default BlogDetails;
- λ°©λ² 2 (μ 체 νμ΄μ§μ μ μ©ν λ)
- src/hooks/ScrollTop.jsx
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
export default function ScrollTop() {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
}
- App.jsx (APPLY)
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { Outlet } from "react-router-dom";
// import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
import GlobalStyle from "./assets/style/GlobalStyle";
import Header from "./components/Header/Header";
import Footer from "./components/Footer/Footer";
import { Suspense } from "react";
import Loading from "./components/Loading";
import ScrollTop from "./hooks/ScrollTop";
const queryClient = new QueryClient();
export default function App() {
return (
<Suspense fallback={<Loading />}>
<QueryClientProvider client={queryClient}>
<ScrollTop />
<GlobalStyle />
<Header />
<Outlet />
<Footer />
{/* <ReactQueryDevtools initialIsOpen={true} /> */}
</QueryClientProvider>
</Suspense>
);
}