버그 내용
위시리스트(/archive/wish)에서 스크롤 후 상품 상세로 이동했다가 뒤로가기 시, 리스트가 맨 위로 리셋되는 문제
버그 재현 방법
- 위시리스트에서 아래로 스크롤
- 상품 카드 클릭 → 상세(
/archive/wish/[id]) 이동
- 뒤로가기 시 리스트가 항상 맨 위로 리셋됨
예상 결과
직전 스크롤 위치를 저장/복원하여 뒤로가기 시 원래 위치로 돌아오도록 한다.
작업 목록
1. 루트 스크롤 컨테이너에 식별자 추가
2. 스크롤 복원 훅 생성
3. 훅 적용
버그 내용
위시리스트(
/archive/wish)에서 스크롤 후 상품 상세로 이동했다가 뒤로가기 시, 리스트가 맨 위로 리셋되는 문제버그 재현 방법
/archive/wish/[id]) 이동예상 결과
직전 스크롤 위치를 저장/복원하여 뒤로가기 시 원래 위치로 돌아오도록 한다.
작업 목록
1. 루트 스크롤 컨테이너에 식별자 추가
layout.tsx의 스크롤 div에id="scroll-container"추가 (현재 ref/id 없음)src/consts/상수 또는 훅 파일 내 상수로 관리2. 스크롤 복원 훅 생성
apps/web/src/app/archive/wish/_hooks/useScrollRestoration.ts생성 (colocation 규칙에 따라_hooks/에 배치, 화살표 함수)scroll리스너(rAF 스로틀) →sessionStorage['scroll:/archive/wish']에scrollTop저장popstate이벤트로 플래그 세팅router.back()도 popstate를 발생시키므로 동일하게 처리됨useLayoutEffect에서scrollTop복원 후 플래그 리셋3. 훅 적용
WishlistList.tsx에서 훅 호출useSuspenseInfiniteQuery데이터 렌더 후useLayoutEffect가 실행되므로 캐시된 페이지들의 DOM 높이가 확보된 상태에서 복원됨