vue项目如何监听localStorage或sessionStorage的变化


Posted in Vue.js onJanuary 04, 2021

出现这个问题的起因:在一个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)
})

以上就是vue 项目如何监听localStorage或sessionStorage的变化的详细内容,更多关于vue 项目监听localStorage或sessionStorage的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
浅析VUE防抖与节流
Nov 24 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue3不同环境下实现配置代理
May 25 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 #Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 #Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 #Vue.js
vue中使用echarts的示例
Jan 03 #Vue.js
vue 动态生成拓扑图的示例
Jan 03 #Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 #Vue.js
vue中activated的用法
Jan 03 #Vue.js
You might like
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
Python中import机制详解
2017/11/14 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python循环实现n的全排列功能
2019/09/16 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
实习自我评价怎么写
2013/12/02 职场文书
酒店总经理工作职责
2013/12/13 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
航空学院求职信
2014/06/11 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
简单租房协议书
2014/10/21 职场文书
解除同居协议书
2015/01/29 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
公司酒会致辞
2015/07/30 职场文书
小学大队长竞选稿
2015/11/20 职场文书
《打电话》教学反思
2016/02/22 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏