不同页签vuex同步

不同页签vuex同步

vuex存本地用localStorage,但想vuex数据在不同页签中实时同步,localStorage还有点不够。
问题描述:vuex修改后会存本地,但多个已经打开的页签中vuex并不是同步的,当一个页签把vuex修改后,本地数据也修改了,但其他页签的vuex数据并没有修改,可能导致一些数据上的逻辑错误或者显示错误。
关于这个问题,试了一下网上的几种方法

  1. 定时器。
    定时器的原理是在本地加一个flag,当vuex中需要监听的数据变化时改变这个值,在需要监听这个值的页面写一个定时器,隔一段时间看看这个flag,如果flag改变了,就重新把localStorage同步到vuex,再把flag改回来。缺点是定时器不停的发送,并且每个需要实时同步的页面都要写一个这样的定时器,漏掉了就会有各种数据不同步的问题,也不稳定。
  2. 监听本地存储
    监听本地存储的方法网上查到了两种。第一种是重新setItem的,window.dispatchEvent派发事件,写了之后直接把内存跑爆了,不知道为啥。第二种是window.addEventLister(‘storage’,function(e){}),这种的不会报各种错或者把内存跑爆。主要写法是在vuex中写下面代码,逻辑进行本地数据赋值给vuex
window.onload = function(){
	window.addEventLister('storage',function(e){
		console.log(e)
	})
}

这样每个需要同步的页面都可以监听到。但还是不很行,不知道为啥。最后只能在要实时的数据前的方法前面手动同步一下vuex和本地存储的数据了。
比如一个操作,这个操作需要当前的vuex和其他页面的vuex数据相同,这时候本地数据被另一个页面的vuex改变了,当前页面的vuex却没有改变,这个时候进行操作前就手动同步一下,把本地数据赋值给vuex。这样两个页面的数据就会实时同步。如果不加上面的监听事件,两边的数据也会同步,但不会实时的显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:vue-cloudMusic是一个使用了vue全家桶和electron的技术栈的应用。你可以通过打开exe文件来一键安装它,并在桌面上直接打开。 引用:如果在vuex中打开了新的,可能会导致vuex失效。这是因为每个都有自己独立的vuex实例,它们之间不会共享状态。如果你想在不同中共享vuex状态,可以考虑使用BroadcastChannel来实现跨通信。BroadcastChannel可以让同源的不同浏览器窗口、Tab、frame或者iframe下的不同文档之间相互通信。你可以创建一个频道,并在不同中监听该频道的消息。当在一个中更新vuex状态时,可以通过发送消息到频道来通知其他更新状态。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [cloudmusic:vue+electron+node的高仿网易云桌面端应用](https://download.csdn.net/download/weixin_42148053/18799108)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [关于解决vuex,redux,多状态不能同步共享问题](https://blog.csdn.net/zw19940808/article/details/126361375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值