联系我们
简单又实用的WordPress网站制作教学
当前位置:网站首页 > 网页前端技术 > 正文

vue数据存储:监听localStorage或sessionStorage的变化 - Web前端

作者:98wpeu发布时间:2026-09-03分类:网页前端技术浏览:1


导读:vue数据存储:监听localStorage或sessionStorage的变化。我们拿实例说明。在一个VUE页面中,引入两个组件,A组件实现基础信息展示,B组件展示列表,我要通过...

vue数据存储:监听localStorage或sessionStorage的变化。我们拿实例说明。

在一个VUE页面中,引入两个组件,A组件实现基础信息展示,B组件展示列表,我要通过A组件的一个按钮触发状态,然后B组件根据A组件触发的状态来做业务处理,首先想到的是把状态放在localStorage,接下去就是在B组件怎么监听A组件状态

解决方法:

1.首先在 mAIn.JS 中给 vue.PRotorype 注册一个全局方法,然后创建一个 Storageevent 方法,当我在执行SessionStorage.setItem(k, val) 的时候,初始化事件并派发事件。

/**
 * @description
 * @author (Set the text for this tag by adding docthis.authorName to your settings file.)
 * @date 2019-05-29
 * @param { number } type 1 localStorage 2 sessionStorage
 * @param { string } key 键
 * @param { String } data 要存储的数据
 * @returns 
 */
VUE.prototype.$addStorageEvent = function (type, key, data) {
  if (type === 1) {
    // 创建一个StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        localStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, Null, null);
        // 派发对象
        window.dispatchEvent(newStorageEvent);
      }
    }
    return storage.setItem(key, data);
  } else {
    // 创建一个StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        sessionStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
        // 派发对象
        window.dispatchEvent(newStorageEvent);
      }
    }
    return storage.setItem(key, data);
  }
}

还有一个简单封装监听localStorage

2.在A组件中调用——写入缓存

this.$addStorageEvent(2, "User_info", data);

或者:

this.resetSetItem('watchStorage', jsonObj);

3.在B组件中监听

window.addEventListener('setItem', (e) => {
   console.log(e);
});

或者:

window.addEventlistener('setItem', ()=> {
    this.newVal = sessionStorage.getItem('WatchStorage');
    var data=JSON.parse(this.newVal)
     console.log(data)
})

试试吧!!!

标签:数据存储WebsessionStoragelocalStoragevue


网页前端技术排行
最近发表
网站分类
标签列表