image.png

들어가며

Dialog.png

사용자가 중요한 정보를 입력하던 중 실수로 페이지를 벗어나는 것을 어떻게 방지할 수 있을까요?

최근 Next.js 기반 프로젝트를 진행하면서 이러한 페이지 이탈 방지 기능을 next-navigation-guard 라이브러리를 활용해서 구현할 수 있었는데요.

이번 글에서는 Next.js의 라우팅 방식과 next-navigation-guard 라이브러리가 어떻게 페이지 이탈 방지 기능을 구현하는지 살펴보겠습니다.

Next.js의

Non-SPA Transition

const beforeUnloadHandler = (event) => {
  // Recommended
  event.preventDefault();

  // Included for legacy support, e.g. Chrome/Edge < 119
  event.returnValue = true;
};

const nameInput = document.querySelector("#name");

nameInput.addEventListener("input", (event) => {
  if (event.target.value !== "") {
    window.addEventListener("beforeunload", beforeUnloadHandler);
  } else {
    window.removeEventListener("beforeunload", beforeUnloadHandler);
  }

SPA: In-App Links

image.png

What happens when <Link> is clicked

image.png