【Vue】跨页面监听 localstorage 的值变化

此文档为个人归纳笔记,非原创

  1. 重写 setItem
    在 src -> utils 中创建 tool.js,对 localstorage 的 setItem 事件进行重写,当使用setItem的时候,触发window.dispatchEvent派发事件。
function dispatchEventStroage() {
    //定义一个变量让setItem函数的值指向它
    let originalSetItem = localStorage.setItem;
    //重写setItem函数
    localStorage.setItem = function (key, newValue) {
        //创建setItemEvent事件
        let event = new Event("setItemEvent");
        event.key = key;
        event.newValue = newValue;
        //提交setItemEvent事件
        window.dispatchEvent(event);
        //执行原setItem函数
        originalSetItem.apply(this, arguments);
    }
}

export default dispatchEventStroage;
  1. 全局导入
    在 main.js 中引入 tool 工具。
import tool from "./utils/tool";

const app = createApp(App)
app.use(tool)
  1. 页面引用
 mounted() {
    //添加setItemEvent监听事件
    window.addEventListener("setItemEvent",  (e) => {
      //监听key为student的localstorage变化
      if (e.key === "student") {
        let oldValue = localStorage.getItem("student");
        if (oldValue !== e.newValue) {
          console.log(
            "localStorage的student值发生改变,由" +
              oldValue +
              "改变为" +
              e.newValue
          );
          this.handleUpdateNewValue();
        } else {
          console.log("localStorage的student值" + e.newValue);
        }
      }
    });
  },
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值