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+Element实现增删改查的示例源码
Nov 23 Vue.js
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
vue el-upload上传文件的示例代码
Dec 21 Vue.js
vue 动态创建组件的两种方法
Dec 31 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 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 registerXPathNamespace()函数讲解
2019/02/03 PHP
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
javascript history对象详解
2017/02/09 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
vue实现分页加载效果
2019/12/24 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python利用命名空间解析XML文档
2020/08/10 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
3.12植树节活动总结2014
2014/03/13 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
租赁协议书范本
2014/04/22 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
销售经理岗位职责
2015/01/31 职场文书
学校开除通知书
2015/04/25 职场文书
高二化学教学反思
2016/02/22 职场文书