다른 페이지를 방문할 때 React에서 스크롤 상태 저장
5711 단어 webdevjavascriptreacttutorial
문제:
스크롤 상태를 저장하는 것은 특히 React 웹 애플리케이션의 페이지가 정말 길고 콘텐츠가 많은 경우 좋은 사용자 경험을 위해 매우 중요합니다. 사용자가 다른 페이지를 방문했다가 이전 페이지로 돌아와서 페이지 상단에서 다시 스크롤해야 한다는 사실을 알게 되면 매우 짜증날 수 있습니다. 사용자가 이전에 있었던 페이지의 스크롤 위치를 저장하는 작은 코드를 추가하여 이러한 고통을 줄일 수 있습니다.
다음과 같이 두 개의 별도 함수를 만듭니다.
// Object in which we will save our scroll position state
const state = {}
// Function to save the scroll state
export const saveState = (page, object) => {
state[page] = object
}
// Function to get the scroll position state
export const getState = (page) => {
return state[page]
}
스크롤 위치를 유지하려는 기본 구성 요소에서 다음 코드를 추가합니다.
import {getState, saveState} from "./Util";
// Get stored scroll position state
const scrollPoint = getState('scrollState')
const scrollY = scrollPoint?.scrollY
/* useEffect to get and set the scroll position in the
current page */
useEffect(() => {
if (scrollY) {
/* setTimeout used to set the scroll position as the
useEffect triggers before the actual page renders */
setTimeout(() => {
window.scrollTo(0, scrollY);
}, 50)
}
}, [scrollY])
// useEffect to store the scroll position in the current page
useEffect(() => {
const save = () => {
saveState('scrollState', {
// accessing the vertical scroll position in the window object
scrollY: window.scrollY
})
}
/* Firing the save function whenever the event listener
picks up a scroll event */
window.addEventListener('scroll', save)
return () => window.removeEventListener('scroll', save)
}, [])
또한 이를 사용자 지정 후크로 별도로 사용한 다음 스크롤 위치를 저장하려는 모든 구성 요소/페이지에서 사용할 수 있습니다. 사용자 정의 후크에서 동일한 논리를 사용하는 다른 기사를 참조하십시오.
이제 구성 요소의 스크롤 상태를 성공적으로 설정했습니다.
Reference
이 문제에 관하여(다른 페이지를 방문할 때 React에서 스크롤 상태 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/renegadedev/save-scroll-state-in-react-when-visiting-another-page-155k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)