@@ -111,30 +111,38 @@ const SignupPage: React.FC = () => {
111
111
e . returnValue = '' ;
112
112
} ;
113
113
114
- let hasShownAlert = false ; // 추가
115
-
116
- const pushStateAndShowAlert = ( ) => {
117
- // alert('페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.');
118
- // window.history.pushState(null, '', window.location.href);
119
- if ( ! hasShownAlert ) {
120
- alert ( '페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.' ) ;
121
- hasShownAlert = true ;
122
- } else {
123
- window . removeEventListener ( 'popstate' , pushStateAndShowAlert ) ;
124
- window . history . back ( ) ;
125
- }
126
- } ;
114
+ // const pushStateAndShowAlert = () => {
115
+ // alert('페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.');
116
+ // window.history.pushState(null, '', window.location.href);
117
+ // };
127
118
128
119
window . addEventListener ( 'beforeunload' , handleBeforeUnload ) ;
129
120
window . history . pushState ( null , '' , window . location . href ) ;
130
- window . addEventListener ( 'popstate' , pushStateAndShowAlert ) ;
121
+ // window.addEventListener('popstate', pushStateAndShowAlert);
131
122
132
123
return ( ) => {
133
124
window . removeEventListener ( 'beforeunload' , handleBeforeUnload ) ;
134
- window . removeEventListener ( 'popstate' , pushStateAndShowAlert ) ;
125
+ // window.removeEventListener('popstate', pushStateAndShowAlert);
135
126
} ;
136
127
} , [ ] ) ;
137
128
129
+ useEffect ( ( ) => {
130
+ const handlePopState = ( event : PopStateEvent ) => {
131
+ const step = event . state ?. step || 1 ;
132
+ if ( step < currentStep ) {
133
+ setCurrentStep ( step ) ;
134
+ } else {
135
+ router . back ( ) ;
136
+ }
137
+ } ;
138
+
139
+ window . addEventListener ( 'popstate' , handlePopState ) ;
140
+
141
+ return ( ) => {
142
+ window . removeEventListener ( 'popstate' , handlePopState ) ;
143
+ } ;
144
+ } , [ currentStep , router ] ) ;
145
+
138
146
return (
139
147
< >
140
148
< Suspense fallback = { < div > </ div > } >
0 commit comments