登录我的仪表板组件后,我不希望用户使用浏览器中的后退按钮返回登录页面。
我没有使用Redux,只使用了React。
答案 0 :(得分:1)
我认为这将有所帮助,如果用户已登录,则保持在同一页面上。
if(loggedIn) {
history.pushState(null, null, location.href);
window.onpopstate = function(event) {
history.go(1);
};
}
答案 1 :(得分:0)
我更喜欢使用我的自定义钩子来拦截浏览器的返回导航:
import { useEffect, useRef } from "react";
// Intercepts browser's Navigate Back event
export const useNavigateBack = (callback: Function): void => {
const isInitialMount = useRef(true);
useEffect(() => {
if (isInitialMount.current) {
isInitialMount.current = false;
window.addEventListener('popstate', function(event) {
window.history.pushState(null, '', document.URL);
event.stopImmediatePropagation();
callback();
}, false);
} else {
// In my special case this fix was needeed:
// window.history.pushState(null, '', document.URL);
}
}, [callback]);
}
现在我可以在组件中调用 use useNavigateBack([我的自定义返回导航处理程序])。