vue如何监听页面缓存事件
目录
- 监听页面缓存事件
- 事情的起因是这样的
- 监听缓存事件
- 在main创建缓存事件
- 在组件生命周期中
- 在组件业务代码
监听页面缓存事件
事情的起因是这样的
项目中需要用到websocket,在网页刚打开的时候,就要进行对话的连接绑定,就我这菜鸟来说,第一次这么搞事情,也是刚接触websocket没多久,这咋整啊?在App.vue中设置了绑定,所有的信息返回都在app.vue组件里面,但是其他组件怎么去获取?而且需要缓存到本地。而当初我还没接触vuex,所以在其他组件里面获取服务器返回的信息只能借助于localStorage,这就郁闷了,这缓存咋监听呀?
首先在main.js里面配置vue原型:
Vue.prototype.resetSetItem = (key, newVal) => {if (key === 'websocketHistory') {// 创建一个StorageEvent事件let newStorageEvent = document.createEvent('StorageEvent'); const storage = {setItem: (k, val) => {localStorage.setItem(k, val); // 初始化创建的事件newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null); // 派发对象window.dispatchEvent(newStorageEvent); }}; return storage.setItem(key, newVal); }};
这个时候,在其他页面写入缓存就不能直接用localStorage了
你需要这么设置
this.resetSetItem('websocketHistory', data);
【vue如何监听页面缓存事件】然后在需要监听的页面中,created函数中使用
window.addEventListener('setItem', () => {console.log(JSON.parse(localStorage.getItem('websocketHistory'))); });
如此,便能在app.vue组件中使用获取服务器返回的信息并存入缓存,在其他组件,比如回话列表页面就可以实时更新列表,包括对话页面。
监听缓存事件 随着H5的更新,前端经常使用本地存储进行交互处理数据,如果想要监听缓存的变化,以下代码就是您想要的。
在main创建缓存事件
// 监听缓存事件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("storageItem",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); }};
在组件生命周期中
监听缓存事件并取值
window.addEventListener("stotageItem",(e) => { // e代表存储的数据 { a:1 }JSON.parse(e.a)},false);
在组件业务代码
进行缓存使用
this.$addStorageEvent(0, "useStorage", // 写入数据JSON.stringify({ a:1 }) );
以上就是全部代。仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- WinXP开机自动打开文件夹如何关闭?
- WinXP无线连接不上提示“windows无法设置此无线连接”如何处理?
- 如何远程控制别人电脑?WinXP电脑怎样远程控制别人电脑?
- WinXP系统ZhuDongFangYu.exe是啥进程?如何结束ZhuDongFangYu.exe进程?
- WinXP如何安装摄像头驱动?WinXP安装摄像头驱动的技巧
- 如何使用命令对Android系统进行截屏
- Django Model 如何返回空的 QuerySet
- 电脑声音驱动器,图文详细说明如何安装声音驱动器
- 关闭端口命令,图文详细说明如何关闭电脑80端口
- 怎样隐藏任务栏图标,图文详细说明win7如何隐藏任务栏程序图标