vue:app.vue中添加監聽beforeunload事件,即當瀏覽器窗口關閉或刷新時刪除vuex中的數據


當打開頁面時,添加事件監聽,即監聽beforeunload事件,beforeunload事件在關閉頁面時觸發。即當關閉頁面時,手動刪除localStorage中的數據。

app.vue中的代碼如下:

<template>
  <div id="app">
    <router-view />
  </div>
</template>

<script>
export default {
  name: "app",
  created() {
    window.addEventListener("`beforeunload`", () => {
      localStorage.removeItem("store");
      localStorage.setItem("store", JSON.stringify(this.$store.state));
    });
  },
  destroyed() {
    localStorage.removeItem("store");
  }
};
</script>

 相關知識點如下:

1、vue實例的生命周期

每個 Vue 實例在被創建時都要經過一系列的初始化過程——例如,需要設置數據監聽、編譯模板、將實例掛載到 DOM 並在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鈎子的函數,這給了用戶在不同階段添加自己的代碼的機會。比如created鈎子可以用來在一個實例被創建之后執行代碼

也有一些其它的鈎子,在實例生命周期的不同階段被調用,如mounted和destroyed。生命周期鈎子的 this 上下文指向調用它的 Vue 實例。

當我們離開這個頁面的時候,便會調用destroyed函數

二、beforeunload事件

當窗口,文檔及其資源即將卸載時,將觸發該事件。

語法

//通用
window.onbeforeunload = function (event) {};
//IE9+
window.addEventListener("beforeunload", function (event) {});

事件觸發場景

1)、關閉瀏覽器窗口

2)、通過地址欄或收藏夾前往其他頁面的時候

3)、點擊返回,前進,刷新,主頁其中一個的時候

4)、點擊 一個前往其他頁面的url連接的時候

5)、使用document.write() 方法(輸出內容)

6)、使用document.open() 打開一個新的空白文檔

7)、使用document.close() 方法可關閉一個由open()方法打開的輸出流,並顯示選定的數據。

8)、當使用window.open() 打開一個頁面,並把本頁的window的名字傳給要打開的頁面的時候。

9)、使用window.close() 關閉頁面的時候

10)、重新賦予window.location.href的值的時候。

11)、通過input type=”submit”按鈕提交一個具有指定action的表單的時候。

12)、使用form.submit() 提交表單的時候

三、localStorage永久存儲

localStorage 和 sessionStorage 屬性允許在瀏覽器中存儲 key/value 對的數據。

localStorage 用於長久保存整個網站的數據,保存的數據沒有過期時間,直到手動去刪除。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM