vue 监听localstorage值发生变化

本文介绍如何通过重写localStorage.setItem方法并在main.js中引入,实现对localStorage变化的监听。具体包括监听setItem事件并根据key值的不同执行相应的操作。

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

1.项目新增一个tool.js文件,复制代码如下:

//****将这段内容放在tool.js文件中****
// 重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件
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;

2.main.js中引入该js:

import tool from "./plugins/tool.js";
Vue.use(tool);

3在需要监听的文件中:

    //解决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(e)
        if(e.key==="InteligenceData"){
          let newV = JSON.parse(e.newValue)
          newV.forEach((item)=>{
              item.type = '1' // 为拆条列表添加进来的数据加一个type
              if(item.ip_type == 3){
                _this.audioData.push(item)
              }else{
                _this.InteligenceData.push(item)
              }
           })
        }
    })

参考https://www.jb51.net/article/261226.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值