반응형
    
    
    
  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 |