아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
올리브영 favicon올리브영

React Query로 무한 스크롤 구현하고, 뒤로 가기 시 스크롤 위치까지 완벽 복원!

by DD
2023-10-04
2년 전
조회수 6

React Query의 useInfiniteQuery 훅을 사용하여 무한 스크롤을 구현함

react-intersection-observer의 useInview 훅으로 스크롤 위치를 감지함

세션 스토리지와 useQueryClient를 활용하여 뒤로 가기 시 스크롤 복원

useInfiniteQuery의 핵심 원리

useInfiniteQuery는 페이지네이션을 쉽게 구현하도록 돕는 React Query 훅이다. 구체적으로 getNextPageParam과 getPreviousPageParam 옵션을 통해 다음/이전 페이지를 결정한다. 따라서 fetchNextPage를 호출하여 다음 데이터를 불러오고, hasNextPage로 다음 페이지 존재 여부를 확인한다.

스크롤 위치 복원을 위한 전략

뒤로 가기 시 스크롤 위치를 복원하기 위해 세션 스토리지를 활용한다. 상품 클릭 시 상품 인덱스와 스크롤 Y값을 저장하고, 검색 결과 페이지 재진입 시 useQueryClient로 데이터를 불러온다. 결과적으로 prefetchInfiniteQuery를 통해 캐싱된 데이터를 활용하여 부드러운 UX를 제공한다.

useInview 훅 활용법

react-intersection-observer의 useInview 훅을 사용하여 뷰포트 진입 여부를 감지한다. ProductCard의 마지막 요소에 ref를 걸어 inView 상태를 모니터링한다. 따라서 fetchNextPage를 호출하여 다음 페이지 데이터를 로드하고, isFetchingNextPage 상태를 통해 로딩 UI를 표시한다.

useInfiniteQuery로 무한스크롤 구현하기
중급
아키텍처
Next.js
React Query
TypeScript
JavaScript
Frontend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

Next.js 보안 패치 긴급 적용하세요!

Next.js 로고

올리브영 라이브관, Next.js로 성능 잡고 개발 효율도 UP!

올리브영 로고

Claude Code가 뽑은 최고의 기술 스택!

테오 로고

AI 코딩, 이제 하네스 시대: OpenCode와 OMO로 개발 생산성 UP!

요즘IT 로고

AI 코딩, 이제 하네스 경쟁 시대! OpenCode와 OMO로 생산성 UP

벨로그 로고

Opus vs Codex: 당신의 선택은?

테오 로고
올리브영 favicon올리브영
중급
아키텍처
Next.js
React Query
TypeScript
JavaScript
Frontend

관련 추천 글

Next.js 보안 패치 긴급 적용하세요!

Next.js 로고

올리브영 라이브관, Next.js로 성능 잡고 개발 효율도 UP!

올리브영 로고

Claude Code가 뽑은 최고의 기술 스택!

테오 로고