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自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
解读Vue组件注册方式
May 15 Vue.js
详解vue中v-for的key唯一性
May 15 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
vue实现简易音乐播放器
Aug 14 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
一个简洁的多级别论坛
2006/10/09 PHP
php strcmp使用说明
2010/04/22 PHP
解析strtr函数的效率问题
2013/06/26 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
Javascript alert消息换行的方法
2013/08/07 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
Python判断操作系统类型代码分享
2014/11/22 Python
Python实现的简单算术游戏实例
2015/05/26 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
TensorFlow实现Logistic回归
2018/09/07 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
软件测试题目
2013/02/27 面试题
汽车销售顾问求职自荐信
2014/01/01 职场文书
领导干部培训感言
2014/01/23 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
政审证明范文
2015/06/19 职场文书