我想检测用户何时离开页面Next JS。我数了三种离开页面的方法:
能够检测何时离开页面非常有用,例如,提醒用户某些更改尚未保存。
我想要类似的东西
router.beforeLeavingPage(() => {
// my callback
})
答案 0 :(得分:0)
您可以在反应页面或组件中使用默认的web api's eventhandler。
if (process.browser) {
window.onbeforeunload = () => {
// your callback
}
}
答案 1 :(得分:0)
这在下一个路由器/ react-FC中对我有用
https://github.com/vercel/next.js/issues/2476#issuecomment-563190607
答案 2 :(得分:0)
您可以使用 router.beforePopState
check here for examples
答案 3 :(得分:0)
您可以使用 react-use npm package
import { useEffect } from "react";
import Router from "next/router";
import { useBeforeUnload } from "react-use";
export const useLeavePageConfirm = (
isConfirm = true,
message = "Are you sure want to leave this page?"
) => {
useBeforeUnload(isConfirm, message);
useEffect(() => {
const handler = () => {
if (isConfirm && !window.confirm(message)) {
throw "Route Canceled";
}
};
Router.events.on("routeChangeStart", handler);
return () => {
Router.events.off("routeChangeStart", handler);
};
}, [isConfirm, message]);
};