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 相关文章推荐
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue全家桶入门基础教程
May 14 Vue.js
详细聊聊vue中组件的props属性
Nov 02 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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 current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
浅谈React高阶组件
2018/03/28 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
django富文本编辑器的实现示例
2019/04/10 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
南京迈特望C/C++面试题
2012/07/09 面试题
兰兰过桥教学反思
2014/02/08 职场文书
群众路线专项整治方案
2014/10/27 职场文书
复兴之路观后感
2015/06/02 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
创业计划书之物流运送
2019/09/17 职场文书
mysql 子查询的使用
2022/04/28 MySQL