vuex+localStorage解决vuex的持久化,并且在不同页面的之间监听localStorage的变化

项目需要新开一个页面,并且在这个页面数据改变时候,父页面需要做相关判断并刷新,尝试过vuex解决,发现vuex刷新失效
在这里插入图片描述
查阅相关文档发现vuex无法持久化,vuex适合组件传值,并不适合页面之间传值,于是将vuex和localStorage结合,从而解决vuex的持久化问题,
在这里插入图片描述
1.在vuex的common.js中定义一个isRefresh,用来控制父页面的刷新状态,当监听到新开的页面中的数据改变时,父页面即刷新一次,
在这里插入图片描述
当vuex改变时将值存在本地.
在这里插入图片描述
在store中的getters.js中计算,当本地有isRefresh的值时先从本地取值.

import { mapMutations, mapGetters } from 'vuex'
//在相关页面中引入vuex
computed: { // 计算属性中用ES6扩展运算符计算getters
        ...mapGetters(['isRefresh'])
 },
 methods: {
        ...mapMutations(["SET_REFRESH"]),
        // 自己项目相关的一些方法.........
 }

在这里插入图片描述
然而在两个不同页面中用watch监听本地或者vuex中数据的变化是不起效果的.
因此我们可以设置定时器,定时监测本地存储中是否有localStorage.getItem(‘isRefresh’).
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值