@@ -4,15 +4,14 @@ import { useEffect, useRef } from 'react';
44interface Scroll {
55 storageKey ?: string ;
66 enabled ?: boolean ;
7- // 이 페이지가 리스트 페이지인지 상세 페이지인지 구분
87 pageType ?: 'list' | 'detail' ;
98}
109
1110export const useSaveScroll = ( opt : Scroll = { } ) => {
1211 const {
1312 storageKey = 'cocktail_scroll' ,
1413 enabled = true ,
15- pageType = 'list' , // 기본값은 리스트
14+ pageType = 'list' ,
1615 } = opt ;
1716 const router = useRouter ( ) ;
1817 const hasRestore = useRef ( false ) ;
@@ -21,42 +20,30 @@ export const useSaveScroll = (opt: Scroll = {}) => {
2120 console . log ( '=== useEffect 실행 ===' ) ;
2221 console . log ( 'pageType:' , pageType ) ;
2322
24- // 상세 페이지에서는 스크롤 복원 로직 실행 안함
25- if ( pageType === 'detail' ) {
26- console . log ( '상세 페이지 - 복원 스킵' ) ;
27- return ;
28- }
2923
30- if ( ! enabled || hasRestore . current ) {
31- console . log ( '조건 불만족' ) ;
32- return ;
33- }
24+ if ( pageType === 'detail' ) return
25+
26+ if ( ! enabled || hasRestore . current ) return
3427
3528 const savedPosition = sessionStorage . getItem ( storageKey ) ;
3629 const shouldRestore = sessionStorage . getItem ( `${ storageKey } _should_restore` ) ;
3730
38- console . log ( 'savedPosition:' , savedPosition ) ;
39- console . log ( 'shouldRestore:' , shouldRestore ) ;
4031
41- // 리스트 페이지이고, 복원 플래그가 있을 때만 복원
4232 if ( savedPosition && shouldRestore === 'true' ) {
4333 const position = parseInt ( savedPosition , 10 ) ;
4434
45- console . log ( '스크롤 복원 시도:' , position ) ;
46-
4735 const restoreScroll = ( ) => {
4836 console . log ( 'restoreScroll 함수 실행' ) ;
4937 window . scrollTo ( 0 , position ) ;
5038 console . log ( '현재 스크롤 위치:' , window . scrollY ) ;
5139 hasRestore . current = true ;
5240 } ;
5341
54- // 여러 타이밍에 시도
42+
5543 requestAnimationFrame ( restoreScroll ) ;
5644 setTimeout ( restoreScroll , 0 ) ;
5745 setTimeout ( restoreScroll , 100 ) ;
5846
59- // 복원 플래그 제거
6047 sessionStorage . removeItem ( `${ storageKey } _should_restore` ) ;
6148 } else {
6249 console . log ( '복원 조건 불만족' ) ;
@@ -67,27 +54,23 @@ export const useSaveScroll = (opt: Scroll = {}) => {
6754 if ( ! enabled ) return ;
6855 const currentScroll = window . scrollY ;
6956 sessionStorage . setItem ( storageKey , currentScroll . toString ( ) ) ;
70- console . log ( '스크롤 저장:' , currentScroll ) ;
7157 } ;
7258
7359 // 상세 페이지로 이동 (스크롤 위치만 저장, 복원 플래그는 설정 안함)
7460 const saveAndNavigate = ( href : string ) => {
7561 saveScroll ( ) ;
7662 sessionStorage . setItem ( `${ storageKey } _url` , location . href ) ;
77- console . log ( '상세 페이지로 이동 - 스크롤만 저장' ) ;
7863 router . push ( href ) ;
7964 } ;
8065
8166 // 뒤로가기 (복원 플래그 설정)
8267 const restoreAndGoBack = ( ) => {
8368 const saveUrl = sessionStorage . getItem ( `${ storageKey } _url` ) ;
84- console . log ( '뒤로가기 - saveUrl:' , saveUrl ) ;
8569
8670 if ( ! saveUrl ) return ;
8771
8872 // 뒤로가기할 때만 복원 플래그 설정
8973 sessionStorage . setItem ( `${ storageKey } _should_restore` , 'true' ) ;
90- console . log ( '복원 플래그 설정 완료' ) ;
9174
9275 router . replace ( saveUrl , { scroll : false } ) ;
9376 } ;
0 commit comments