本文介绍了在页面重新加载之前执行http请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Reaction应用程序,并且希望在用户尝试关闭该页或重新加载该页时销毁该会话。
我尝试的内容:
- window.onbepreunload=()=>;true:这将提供一个默认提示符,其中可能包含自定义消息。
- 提示(反应路由器):未捕获页面重新加载
- 通过EventListener使用生效
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">useEffect(() => {
window.addEventListener("beforeunload", function(evt) {
// Cancel the event (if necessary)
evt.preventDefault();
axios.get('url/destroy').then(res=> evt.returnValue = '';)
});
}, []);
面临的问题:请求被取消。
我尝试在响应http调用的超时时间内添加evt.returValue=‘’。但它也没有起作用。
实现相同或相同目的的任何解决方法,即在页面重新加载/关闭时进行http调用。
提前谢谢。
更新1:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
useEffect(() => {
window.addEventListener("beforeunload", (e) =>
alertUser(e, cookies.get("env"))
);
}, []);
const alertUser = async (e, tempBool) => {
e.preventDefault();
if (tempBool) {
let blob = new Blob(
[
JSON.stringify({
data: "data",
}),
],
{ type: "application/json" }
);
navigator.sendBeacon(
"ur/destroy_session",
blob
);
e.returnValue = "";
} else {
e.returnValue = "";
}
};