vue中监听localStorage中的值

文章介绍了如何通过重写localStorage.setItem方法并在设置值时触发自定义事件,以便在Vue应用中监听localStorage的变化。在utils文件夹的tool.js中定义了新的setItem函数,然后在main.js中全局引入并使用。监听代码需写在组件的mounted()生命周期钩子中,确保在window对象上添加事件监听器。当localStorage的特定键值变化时,可以捕获并处理这个变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题重点:重写localStorage.setItem事件

                  当使用setItem的时候触发 window.dispatchEvent派发事件

第一步

在根目录下创建utils文件夹,再创建一个tool.js文件

写下重写localStorage.setItem事件的代码

function dispatchEventStroage() {
    const signSetItem = localStorage.setItem
    localStorage.setItem = function(key, val) {
        let setEvent = new Event('setItemEvent')
        setEvent.key = key
        setEvent.newValue = val
        window.dispatchEvent(setEvent)
        signSetItem.apply(this, arguments)
    }
}

export default dispatchEventStroage;

第二步

在main.js全局引用该文件

import tool from "./utils/tool";
Vue.use(tool);

第三步

在你需要监听localStorage的文件中加入下列代码,即可实现你在组件任意位置改变localStorage某个键的值,在需要监听localStorage的组件内都能监听到值的改变,从而重新赋值,以此达到监听的目的。

注意: 监听代码写在  mounted() 中。。。

  mounted() {
    //解决this指向问题,在window.addEventListener中this是指向window的。
    //需要将vue实例赋值给_this,这样在window.addEventListener中通过_this可以为vue实例上data中的变量赋值
    let _this = this;
    //根据自己需要来监听对应的key
    window.addEventListener("setItemEvent", function (e) {
      //e.key : 是值发生变化的key
      //例如 e.key==="token";
      //e.newValue : 是可以对应的新值
      console.log("值改变了");
      if (e.key === "token") {
        console.log(e.newValue);
        _this.token= JSON.parse(e.newValue);
      }
    });
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值