如果存在某个Cookie(使用通用Cookie),那么当用户退出应用程序时,我需要从浏览器中删除Cookie。
我拥有的代码:
componentWillUnmount(){
const cookies = new Cookies();
if(cookies.get("remember")==0){
cookies.remove("userName");
cookies.remove("password")
}
}
可以在其他组件上运行,但是我只需要在根目录上启动它即可,直到用户关闭应用。
为什么在应用程序退出时componentWillUnmount不会启动?
答案 0 :(得分:4)
compomentWillUnmount
。 beforeunload
事件允许执行同步操作:
constructor() {
window.addEventListener('beforeunload', this.onUnmount, false);
}
onUnmount = () => {
// clear cookies
}
compomentWillUnmount() {
window.removeEventListener('beforeunload', this.onUnmount, false);
this.onUnmount();
}
beforeunload
在某些浏览器中可能无法使用,并且也不可靠。
这是XY问题。 Cookie过期之前已解决了此问题,cookie可能是短期的,但在打开浏览器窗口时会定期更新。
由于存在localStorage
和sessionStorage
,因此通常认为cookie通常已经过时。诸如凭据之类的敏感数据可以存储在sessionStorage
中。它会在浏览器退出时自动清除。