useEffect(() => {
router.beforePopState(({ as }) => {
if (as !== router.asPath) {
// Will run when leaving the current page; on back/forward actions
// Add your logic here, like toggling the modal state
}
return true;
});
return () => {
router.beforePopState(() => true);
};
}, [router]); // Add any state variables to dependencies array if needed.
4条答案
按热度按时间ef1yzkbh1#
您可以使用
next/router
的beforePopState
对会话历史导航的更改进行操作(后退/前进操作),并确保它只在离开当前页面时发生。z5btuh9x2#
@Summy我希望你的问题现在已经解决了。如果没有,你可以尝试这个浏览器后退按钮:- Next.js + React返回上一页如果你想使用哈希绑定URL,你不能使用SSR,因为/#和/#/one是相同的路由服务器端,所以服务器没有办法知道要呈现什么,它需要发送一个基本的模板,让客户端填充它,在这种情况下,我认为使用CRA或Parcel与React路由器及其HashRouter是一个更好的选择,这样你就有一个单一的index.html,让客户端决定要呈现什么。
1zmg4dgp3#
在NextJs中,我们可以使用beforePopState函数并执行我们想要的操作,例如关闭模态或显示模态或检查返回地址并决定要执行的操作
https://stackoverflow.com/a/60702584/4717739
https://stackoverflow.com/a/69560739/4717739
mnemlml84#
我已经尝试了上述解决方案,但不幸的是没有为我工作。我已经设法克服以下情况下给定的问题:在浏览器上打开模态“返回”操作。我有问题,当我点击返回按钮,我得到打开模态,但当前的网址被更改为以前的网址。