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 может быть недолговечным, но периодически обновляться.
В настоящее время файлы cookie в целом могут считаться устаревшими, поскольку имеются localStorage
и sessionStorage
.Конфиденциальные данные, такие как учетные данные, могут храниться в sessionStorage
.Он автоматически очищается при выходе из браузера.