reactjs - 仅在窗口关闭而不是页面刷新时发送“removeUser”请求
问题描述
我正在使用socket.io/ReactJS
. 我面临一个问题,其中我需要NodeJS/ExpressJS
在浏览器窗口关闭而不是页面刷新时从后端()中删除特定用户(字符串值 - 只是一个用户名)。当我使用redux-persist
(会话存储)时,我想在刷新窗口时保留用户状态,但是当用户关闭浏览器窗口时,用户将从后端删除,显然也从会话存储中删除。
在我的 App.js 文件中,我有以下代码来注册事件:
removeUserBeforeUnload = () => {
if (window.performance.navigation.type !== 1)
// The socket request which removes the username from the backend
socket.emit("removeUser", this.props.currentUser);
};
setupBeforeUnloadListener = () => {
window.addEventListener("beforeunload", ev => {
ev.preventDefault();
return this.removeUserBeforeUnload();
});
};
componentDidMount() {
// Registering event
this.setupBeforeUnloadListener();
}
我尝试使用 window.performance.navigation.type 但这似乎不起作用。谢谢你的帮助。
解决方案
推荐阅读
- salesforce - Apex 测试类 - 简单插入
- c - fread 不会更改函数中的指针值(使用 feof 导致无限循环)-C
- python - 在单独的文件中记录 SQLAlchemy
- azure - 创建后如何在 Azure 数据工厂中启用诊断
- gradle - 如何忽略 gradle 覆盖率报告中的某些类路径?
- javascript - 由于(TypeError:无法读取未定义的属性'indexOf')在角度5中,业力测试用例失败
- scala - 将 Slick 2.1 StaticQuery 迁移到 Slick 3.1
- xamarin.forms - Xamarin Forms iOS:为什么渲染器是包装控件本机视图的本机视图?
- python - Gitlab CI自动增加python包的版本
- android - 如何在 Android 5.0+ 上设置 SearchView 样式?