(썸네일용)
현재 자사 뉴스 페이지의 무한스크롤은 받아온 데이터 요소를 하단에 계속 추가하고 있다.
IntersectionObserver
불필요 (코드 및 라이브러리 수 감소)이슈 발생
반응형으로 모바일로 바꾸게 되면 paddingbottom이 사라짐 (라이브러리 버그)
외부에 별도 div를 생성해 paddingBottom 을 별도 부여해서 해결
결과물
이슈 발생
무한스크롤 기능 구현 이후 컨텐츠 상세 → 원래 페이지로 돌아올 경우 스크롤이 유지되지 않는 문제가 있었다.
++ 자꾸 스크롤이 최하단에 내려가 푸터로 가있음.
시도 1
window scroll y 크기를 리덕스를 통한 전역으로 관리하여 해당 위치로 다시 이동되도록 한다.
react-virtuoso로 기능을 구현할 경우 실제 window 스크롤 값으로 이동이 어려움.
리덕스로 상태를 관리할 경우 새로고침하면 스크롤 값이 초기화됨.
시도 2
window scroll y값 대신 virtuoso로 렌더링된 아이템 인덱스 값을 찾아 해당 위치로 이동하게 한다.
리덕스 대신 세션스토리지에 값을 저장해서 새로고침 하더라도 값이 저장되도록 한다.
세션스토리지에 값이 계속 저장되지 않도록 원래 페이지로 돌아오면 세션에 값을 삭제한다.
스크롤 했을 때 해당 위치의 대략 적인 인덱스 값을 저장해버리니 위치가 정확하지 않다.
무한스크롤 데이터가 이미 렌더링이 끝났는데 인덱스 상태 값이 뒤늦게 업데이트 되다 보니 해당 위치로 이동하지 못한다.
시도 3
virtuoso로 렌더링된 아이템 중 클릭한 인덱스 값을 세션스토리지에 저장한다.
isReady 라는 상태를 추가 해 인덱스 데이터를 완전히 불러오기 전까지는 무한스크롤 로딩 상태를 유지하도록 한다.
위치 값이 상태에 저장되고 나면 이후 무한스크롤 렌더링을 한다.
해당 인덱스가 가운데로 오도록 해야하는데, 계속 상단에 위치한다. 위치를 center로 줘도 변화 없음.
시도 4
내가 봐야하는 인덱스가 상단에 위치하고 있으니 인덱스 값 - 2 or -3을 주게 된다면 목표했던 인덱스가 가운데로 위치하게 될 것. 값이 음수로 가게 된다면 에러가 나기에 예외처리로 0 이하면 무조건 0 값을 부여했다.
결과
성공!!
옵저버 옵저버~