Frontend/React Hook

[React-Hooks] React Hooks - useBeforeLeave

갈푸라떼 2022. 7. 13. 00:22

* useBeforeLeave

  • 페이지를 벗어날 때 사용자에게 팝업이나 알림을 띄워 줄 수 있는 hook이다

* useBeforeLeave 예시코드

import { useEffect } from "react";

const useBeforeLeave = (onBefore) => {
  const handle = () => {
    onBefore();
  };
  useEffect(() => {
    if (typeof onBefore === "function") {
      document.addEventListener("mouseleave", handle);
      return () => document.removeEventListener("mouseleave", handle);
    }
  }, []);
};

const App = () => {
  const begForLife = () => console.log("Plz don't leave");
  useBeforeLeave(begForLife);
  return (
    <div>
      <div>Ho</div>
    </div>
  );
};

export default App;

* useBeforeLeave 예시코드 (특정 조건을 포함 시킨 예시 코드)

import { useEffect } from "react";

const useBeforeLeave = (onBefore) => {
  const handle = (event) => {
    const { clientY } = event;
    if (clientY <= 0) {
      onBefore();
    }
  };
  useEffect(() => {
    if (typeof onBefore === "function") {
      document.addEventListener("mouseleave", handle);
      return () => document.removeEventListener("mouseleave", handle);
    }
  }, []);
};

const App = () => {
  const begForLife = () => console.log("Plz don't leave");
  useBeforeLeave(begForLife);
  return (
    <div>
      <div>Ho</div>
    </div>
  );
};

export default App;
  • handle함수의 인자로 event를 받아주고 clientY의 값이 0이하로 내려갈경우 알림이 나오게 셋팅을 해주었다.
  • 페이지의 위로 벗어날 때 만 코드가 실행되게 구성하였다.