vuex状态刷新后丢失问题兼容IOS

40 篇文章 3 订阅

这个是参考多个网上的资料,然后自己整理,希望能帮到各位

 

App.vue:

created() {
        //在页面加载时读取缓存里的状态信息
        if (localStorage.getItem("users")) {
            this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(localStorage.getItem("users"))))
        }

        var isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if (isiOS) {
            //在页面刷新时将vuex里的信息保存到缓存里
            window.addEventListener("pagehide", () => {
                localStorage.setItem("users", JSON.stringify(this.$store.state))
            })
        } else {
            //在页面刷新时将vuex里的信息保存到缓存里
            window.addEventListener("beforeunload", () => {
                localStorage.setItem("users", JSON.stringify(this.$store.state))
            })
        }
    },

效果:

Ps:

1、Object.assign(),这个是用于对象的合并

2、Object.assign({}, object, object),第一个是对象是目标对象,如果对象中有重复的字段存在那么后面的会覆盖前面的字段,以此类推;

const target = { a: 1, b: 1 };

const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

3、第一个对象设置成 " {} ",是纯粹为了让后面几个源对象合并

Object.assign()参考资料:https://www.baidu.com/link?url=pPMCQffQKnFwCzuNf3Z4sYAubHt61KJk6_5cgugDMKzI9izz_CQo4BUKHKnR-zoU&wd=&eqid=af432f55000aad8e000000065e97bb63

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余温无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值