반응형
const browserPreventEvent = (event: () => void) => {
history.pushState(null, "", location.href);
event();
};
useEffect(() => {
history.pushState(null, "", location.href);
window.addEventListener("popstate", () => {
browserPreventEvent( '이벤트 함수');
});
return () => {
window.removeEventListener("popstate", () => {
browserPreventEvent('이벤트 함수');
});
};
}, []);
- 함수 선언: export const browserPreventEvent = (event: () => void) => {...};
- browserPreventEvent라는 함수를 선언하고, 이 함수는 하나의 매개변수 event를 받습니다. event는 함수 타입입니다.
- 이 함수는 브라우저의 현재 URL로 history 상태를 강제로 푸시하고, 제공된 event 함수를 실행합니다. 이는 뒤로 가기 이벤트가 발생했을 때 사용자 정의 동작을 수행하게 합니다.
- useEffect 훅 사용:
- useEffect는 컴포넌트가 마운트될 때와 업데이트될 때 부수 효과를 실행하기 위해 사용됩니다. 여기서는 의존성 배열이 비어 있기 때문에 컴포넌트가 마운트될 때만 실행됩니다.
- 내부에서 history.pushState 호출:
- 컴포넌트가 마운트되자마자, 현재의 URL 상태를 다시 history 객체에 푸시하여 브라우저의 세션 기록에 현재 위치를 추가합니다.
- window.addEventListener("popstate", () => {...}):
- 브라우저의 뒤로 가기 이벤트(popstate)에 대한 리스너를 추가합니다. 이 리스너는 뒤로 가기 버튼이 클릭될 때 browserPreventEvent 함수를 호출하여 onOpenStopBack 함수를 실행합니다.
- 정리 함수: return () => {...};
- useEffect 훅은 정리(clean-up) 함수를 제공할 수 있습니다. 이 예제에서 정리 함수는 컴포넌트가 언마운트될 때 실행됩니다.
- window.removeEventListener("popstate", () => {...})를 호출하여, 더 이상 필요 없는 이벤트 리스너를 제거합니다. 이는 메모리 누수를 방지하고, 불필요한 리스너가 계속해서 활성화되는 것을 막습니다.
반응형
'Frontend > HTML, CSS, DOM, jQuery' 카테고리의 다른 글
aria-label 의 설명과 SEO와의 관련성 (0) | 2023.12.14 |
---|---|
node 최신버전(노드 최신버전) 설치했는데, 인식 못할때 (0) | 2023.10.27 |
JS)소수점 있으면 toFixed 없으면, 그냥 보여주도록 하는 로직 (0) | 2023.10.25 |
overflow clip (overflow hidden과 차이점, overflow-clip) (0) | 2023.10.24 |
TypScripti) 특정 값 배열 타입, 인자, 파라미터 안에 any인 불특정 인자 (0) | 2023.02.17 |