почему componentWillUnmount не запускается в корневом компоненте React при закрытии приложения - PullRequest
0 голосов
/ 19 сентября 2018

Мне нужно удалить файлы cookie из браузера, когда пользователь выходит из приложения, если присутствует определенный файл cookie (используется универсальный файл cookie).

код, который у меня есть:

componentWillUnmount(){
    const cookies = new Cookies();
    if(cookies.get("remember")==0){
      cookies.remove("userName");
      cookies.remove("password")
    }

  }

работает на других компонентах, но он мне нужен в корне только для запуска до того, как пользователь закроет приложение.

Почему не запускается componentWillUnmount при выходе из приложения?

1 Ответ

0 голосов
/ 19 сентября 2018

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.Он автоматически очищается при выходе из браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...