사용자 지정 후크를 사용하여 다른 페이지를 방문할 때 React에서 스크롤 상태 저장
5216 단어 tutorialjavascriptreactwebdev
문제:
스크롤 상태를 저장하는 것은 좋은 사용자 경험을 위해 매우 중요합니다. 특히 React 웹 애플리케이션의 페이지가 정말 길고 콘텐츠가 많을 때 그렇습니다. 사용자가 다른 페이지를 방문했다가 이전 페이지로 돌아와서 페이지 상단에서 다시 스크롤해야 한다는 사실을 알게 되면 매우 짜증날 수 있습니다. 사용자가 이전에 있었던 페이지의 스크롤 위치를 저장하는 작은 코드를 추가하여 이러한 고통을 줄일 수 있습니다.
useScrollPosition.js에서 사용자 지정 후크를 만들 수 있습니다.
import {useEffect} from "react";
// Object in which we will save our scroll position state
const scrollPositions = {};
/* custom hook which will save the scroll state and also set
the scroll position of our page */
const useScrollPosition = (page) => {
useEffect(() => {
// Get the scroll state if it exists
const pageScrollPosition = scrollPositions[page];
// If it exists then set the scroll position of our page
if (pageScrollPosition) {
/* Using setTimeout to set the scroll position of the
page as useEffect gets triggered before the page has
actually rendered */
setTimeout(() => {
window.scrollTo(0, pageScrollPosition);
}, 50)
}
/* save function to save the scroll position in
the scrollPositions object */
const save = () => {
scrollPositions[page] = window.scrollY;
}
/* Attaching an event listener to listen for a scroll event
and then fire the save function everytime a scroll event occurs */
window.addEventListener('scroll', save)
/* Removing the event listener when the component unmounts*/
return () => {
window.removeEventListener('scroll', save)
};
}, [page]);
}
export default useScrollPosition;
이제 스크롤 상태를 저장하려는 구성 요소에서 useScrollPosition 후크를 사용합니다.
import useScrollPosition from "./useScrollPosition";
// Call the useScrollPosition hook with the page name
useScrollPosition("Home")
그게 다야! 모두 끝났습니다!
Reference
이 문제에 관하여(사용자 지정 후크를 사용하여 다른 페이지를 방문할 때 React에서 스크롤 상태 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/renegadedev/save-scroll-state-in-react-when-visiting-other-page-with-a-custom-hook-57nk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)