vue监听localStorage和sessionStorage缓存的数据变化

1、在main.js写一个dispatchEvent派发事件

Vue.prototype.$addStorageEvent = function (type, key, data) {
  let newStorageEvent;
  if (type === 1) {
    // 创建一个StorageEvent事件
    newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        localStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItemEvent', false, false, k, null, val, null, null);
        // 派发对象
        window.dispatchEvent(newStorageEvent);
      }
    }
    return storage.setItem(key, data);
  } else {
    // 创建一个StorageEvent事件
    newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        sessionStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItemEvent', false, false, k, null, val, null, null);
        // 派发对象
        window.dispatchEvent(newStorageEvent);
      }
    }
    return storage.setItem(key, data);
  }
}

2、存放缓存数据

 onSubmit (defaultVal) {
   const searchParam = {
      test1: defaultVal.test1,
      test2: defaultVal.test2,
      test3: defaultVal.test3
    }
    this.$addStorageEvent(1, "searchParam", JSON.stringify(searchParam))
  }

3、vue组件当中监听localStorage数据变化,来赋值,监听要写在mounted ()中

 mounted() {
  	window.addEventListener('setItemEvent', this.getList)
},
methods: {
    getList() {
      // 当缓存数据变化时,进行业务逻辑处理
      let queryParam = JSON.parse(localStorage.getItem("searchParam"))
      ...
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,可以使用LocalStorageSessionStorage来进行本地存储。LocalStorage用于长期存储数据,即使关闭浏览器后数据仍然存在,而SessionStorage则用于临时存储数据,关闭浏览器后数据会被清除。 要在Vue中使用LocalStorageSessionStorage,你可以按照以下步骤进行: 1. 首先,你需要在Vue组件中导入LocalStorageSessionStorage方法。你可以使用`import`语句将它们导入到你的组件中。 2. 接下来,你可以使用`localStorage.getItem(key)`方法来获取存储在LocalStorage中的数据,其中`key`是你设置的键名。同样地,你可以使用`sessionStorage.getItem(key)`方法来获取存储在SessionStorage中的数据。 3. 如果你想要将数据存储到LocalStorage中,你可以使用`localStorage.setItem(key, value)`方法,其中`key`是你设置的键名,`value`是你要存储的值。同样地,你可以使用`sessionStorage.setItem(key, value)`方法将数据存储到SessionStorage中。 4. 如果你想要删除LocalStorageSessionStorage中的数据,你可以使用`localStorage.removeItem(key)`或`sessionStorage.removeItem(key)`方法,其中`key`是你要删除的键名。 5. 最后,如果你想要清除所有的LocalStorageSessionStorage中的数据,你可以使用`localStorage.clear()`或`sessionStorage.clear()`方法。 通过使用这些方法,你可以在Vue中方便地使用LocalStorageSessionStorage来进行本地存储操作。 请注意,由于LocalStorageSessionStorage是基于键值对的存储方式,所以你需要注意键名的唯一性以及数据的格式。此外,LocalStorageSessionStorage的存储容量是有限的,通常在5MB左右,超过限制可能会导致数据存储失败。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vuelocalstoragesessionstorage的使用](https://blog.csdn.net/baozi141990/article/details/103481892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值