...
const storePathValues = () => {
const storage = globalThis?.sessionStorage;
if (!storage) return;
// Set the previous path as the value of the current path.
const prevPath = storage.getItem("currentPath");
storage.setItem("prevPath", prevPath);
// Set the current path value by looking at the browser's location object.
storage.setItem("currentPath", globalThis.location.pathname);
}
useEffect(() => storePathValues, [router.asPath]);
...
3条答案
按热度按时间xnifntxz1#
您可以使用
window?.history?.state?.idx
来检查表示最近访问的页面的状态索引。如果是
window?.history?.state?.idx > 0
,表示使用者已经在网站上浏览,您可以“安全地”使用router.back(...)。如果URL是直接贴到浏览器中,这个值会相等0。ukdjmx9f2#
你可以 checkout
document.referrer
并检查URL的主机名是否与你的主机名匹配。如果匹配,你可以安全地使用router.back()。如果不匹配,你可以使用router.push('/')
。bqf10yzr3#
不幸的是,
document.referrer
不能正确地与Next一起工作。首选的方法是使用会话存储来保存以前和当前的路径,方法是在_app.js中使用useEffect钩子这样,您就可以评估用户来自哪个页面,然后使用router.back()或router.push()。