我试图禁用特定页面上的后退按钮,但无法使其工作。
我正在使用钩子,我试过做之类的事情
window.history.pushState(null, null, window.location.href);
window.onpopstate = function () {
window.history.go(1);
};
如果我在useEffect中的页面上设置了禁用后退按钮,它会禁用任何其他页面。
我还试着在useEffect中运行一个函数:
useEffect(() => {
if (window.location = `/example`)
window.history.pushState(null, null, window.location.href);
window.onpopstate = function () {
window.history.go();
}
}, [])
如果放置在useEffect中,它会在循环中不断运行,因为条件总是返回true(因为路由路径匹配(,并且会导致重新渲染。
我创建了一个沙箱,它可以防止在第二个页面上进行反向导航。
https://codesandbox.io/s/disable-back-buton-ipstr
附言:除非绝对必要,否则我不会覆盖浏览器的默认行为。