728x90
// usePreventLeave.js
const usePreventLeave = () => {
const listener = (event) => {
event.preventDefault();
event.returnValue = "";
};
const enablePrevent = () => window.addEventListener("beforeunload", listener);
const disablePrevent = () =>
window.removeEventListener("beforeunload", listener);
return { enablePrevent, disablePrevent };
};
export default usePreventLeave;
// index.js
import React from "react";
import ReactDOM from "react-dom";
import usePreventLeave from "./usePreventLeave";
const App = () => {
const { enablePrevent, disablePrevent } = usePreventLeave();
return (
<div className="App">
<button onClick={enablePrevent}>Protect</button>
<button onClick={disablePrevent}>Unprotect</button>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
beforeunload를 적용하면 해당 페이지를 떠날 때 확인 메시지가 나오게 됩니다.

'React' 카테고리의 다른 글
| [React] 동적 스타일 적용 (2) | 2021.01.08 |
|---|---|
| [React] mouseleave (0) | 2021.01.08 |
| [React] window.confirm() (0) | 2021.01.08 |
| [React] click 이벤트 (0) | 2021.01.08 |
| [React] useRef (0) | 2021.01.08 |