vue项目如何监听localStorage或sessionStorage的变化
出现这个问题的起因:在一个VUE页面中,引入两个组件,A组件实现基础信息展示,B组件展示列表,我要通过A组件的一个按钮触发状态,然后B组件根据A组件触发的状态来做业务处理,首先想到的是把状态放在localStorage,接下去就是在B组件怎么监听A组件状态
解决方法:
1.首先在main.js中给Vue.protorype注册一个全局方法,然后创建一个StorageEvent方法,当我在执行sessionStorage.setItem(k,val)的时候,初始化事件并派发事件。
/**
*@description
*@author(Setthetextforthistagbyaddingdocthis.authorNametoyoursettingsfile.)
*@date2019-05-29
*@param{number}type1localStorage2sessionStorage
*@param{string}key键
*@param{string}data要存储的数据
*@returns
*/
Vue.prototype.$addStorageEvent=function(type,key,data){
if(type===1){
//创建一个StorageEvent事件
varnewStorageEvent=document.createEvent('StorageEvent');
conststorage={
setItem:function(k,val){
localStorage.setItem(k,val);
//初始化创建的事件
newStorageEvent.initStorageEvent('setItem',false,false,k,null,val,null,null);
//派发对象
window.dispatchEvent(newStorageEvent);
}
}
returnstorage.setItem(key,data);
}else{
//创建一个StorageEvent事件
varnewStorageEvent=document.createEvent('StorageEvent');
conststorage={
setItem:function(k,val){
sessionStorage.setItem(k,val);
//初始化创建的事件
newStorageEvent.initStorageEvent('setItem',false,false,k,null,val,null,null);
//派发对象
window.dispatchEvent(newStorageEvent);
}
}
returnstorage.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');
vardata=JSON.parse(this.newVal)
console.log(data)
})
以上就是vue项目如何监听localStorage或sessionStorage的变化的详细内容,更多关于vue项目监听localStorage或sessionStorage的资料请关注毛票票其它相关文章!