当打开页面时,添加事件监听,即监听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 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。

 

posted on 2021-12-03 17:49  周文豪  阅读(3912)  评论(0编辑  收藏  举报