解决vuex页面刷新导致数据丢失问题

vuex是大家使用vue时大多数都会选择的,但是当页面刷新之后vuex数据会丢失,因为页面刷新之后代码重新加载这样vuex的数据自然就会为空。怎么解决这个问题呢?vuex自身好像没有太好的解决方案,但是我们可以利用localStorage和sessionStorage对数据进行保存。这样这个问题就解决了。这个方法比较简单但是其实这样做就和vuex没有太大的关系了,我们可以将数据存在localStorage中为什么还要用vuex呢?所以这种方法可用但是不建议,那么还有什么解决方案呢? 其实网上也有很多解决这个问题的三方组件,例如 vuex-along。

  vuex-along的实质也是将vuex中的数据存放到localStorage或者sessionStroage中,只不过这个存取过程这个组件会帮我们完成,我们只需要用vuex的读取数据方式操作就可以了,简单了解一下vuex-along的使用方法。

  安装vuex-along:

npm install vuex-along --save

  配置vuex-along: 在store/index.js 中最后添加以下代码:


import VueXAlong from ‘vuex-along‘
plugins: [VueXAlong({
    name: ‘along‘,     //存放在localStroage或者sessionStroage 中的名字
    local: false,      //是否存放在local中  false 不存放 如果存放按照下面session的配置配
    session: { list: [], isFilter: true } //如果值不为false 那么可以传递对象 其中 当isFilter设置为true时, list 数组中的值就会被过滤调,这些值不会存放在seesion或者local中
  })]

  上面配置之后就可以正常使用vuex了,页面刷新数据也不会丢失了。

  当然这种问题的解决方案很多,但是大多数都要借助seesion或local的帮助,如果不使用组件的化,可以在页面刷新之前将vuex的数据存放在seesion或local中, 刷新事件(beforeunload) 。

原文地址:https://www.cnblogs.com/webtaotao/p/11361868.html

时间: 2024-10-07 05:25:16

解决vuex页面刷新导致数据丢失问题的相关文章

AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题

解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共勉之. 页面正常加载后,显示如下: 按F5刷新之后,页面如下所示: 很明显,页面显示出现了异常.回过头再看看Chrome的错误提示, 具体代码如下: 正是以上代码导致了错误的发生. 追根溯源 让我们回顾一下,错误到底是如何发生的.正常加载情况下,页面正常显示很容易理解,程序是按照既定的数据流走的.但

vuex页面刷新数据丢失的解决办法

在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 原因: 因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值初始化 解决思路: 将state的数据保存在localstorage.sessionstorage或cookie中(三者的区别),这样即可保证页面刷新数据不丢失且易于读取. localStorage: localStorage的生命周期是永久的,关闭页面或浏览器之

vuex页面刷新数据不保留,解决方法(转)

今天这个问题又跟页面的刷新有一定的关系,虽然说跟页面刷新的关系不大,但确实页面刷新引起的这一个问题. 场景: VueX里存储了 this.$store.state.PV这样一个变量,这个变量是在app.vue里通过接口获取然后存储在vueX里的,在路由activity.vue中,我们需要用到这个变量,并且通过这个变量的值来控制路由页面里某一段dom元素的显示与否. 这个需求这样描述起来,是很好实现的.于是我就简单写了几段代码,很简单轻松的实现了这个需求: //acitity.vue Dom结构

vue,下级页面刷新导致路由跳转带过来的数据消失的解决方法

if(typeof(this.$route.query.result)=='string'){ //刷新时走这 }else{ //正常路由跳转过来后就把数据塞到 localStorage let obj = JSON.stringify(this.$route.query); //转化为JSON字符串 localStorage.setItem("prizeResult", obj); //数据存storage,防止刷新丢失 } 去localStorage取 let result = J

Js页面刷新前提示-jquery页面刷新事件

//原理很简单,就是在body的onbeforeunload事件绑定函数,代码如下: document.body.onbeforeunload = function (event) { var c = event || window.event; if (/webkit/.test(navigator.userAgent.toLowerCase())) { return "离开页面将导致数据丢失!"; } else { c.returnValue = "离开页面将导致数据丢失

页面刷新前提示用户_js刷新事件

document.body.onbeforeunload = function (event)     {         var c = event || window.event;         if (/webkit/.test(navigator.userAgent.toLowerCase())) {             return "离开页面将导致数据丢失!";         }         else         {             c.return

解决vuex刷新页面数据丢失

1.前言 vue构建的项目中,vuex的状态存储是响应式的,当vue组件从store中读取状态的时候,若store中的状态发生变化,那么相应的组件也会得到高效刷新,问题来了,vuex存储的数据只是在页面中,相当于我们定义的全局变量,刷新之后,里面的数据就会恢复到初始化的状态.比如,用户已经登录了,我把登录状态放到state中了,一刷新页面,还要重新登录?购物车里的添加的数据,一刷新要重新添加? 2.使用场景 vuex存取值一般都是放在computed计算属性中,但是一刷新页面的数据就没了 3.思

使用sessionStorage解决vuex在页面刷新后数据被清除的问题

https://www.jb51.net/article/138218.htm 1.原因 2.解决方法 localStorage没有时间期限,除非将它移除,sessionStorage即会话,当浏览器关闭时会话结束,有时间期限,具有自行百度 我这里使用sessionStorage,这里需要注意的是vuex中的变量是响应式的,而sessionStorage不是,当你改变vuex中的状态,组件会检测到改变,而sessionStorage就不会了,页面要重新刷新才可以看到改变,所以应让vuex中的状态

页面刷新vuex数据消失问题解决方案

VBox持续进行中,哀家苦啊,有没有谁给个star. vuex是vue用于数据存储的,和redux充当同样的角色. 最近在VBox开发的时候遇到的问题,页面刷新或者关闭浏览器再次打开的时候数据归零.这是头疼的问题. 网上搜,大家的方案都是把数据转移到 localStorage或者其他持久化存储(例如indexDB). 这倒是可以,我在设计之初因为匆忙,没有考虑周全,这下好,然不成每个 mutation都去存一下. 这个弄的我很不开心,周六在公司,本来就困的要死,又想不到合理的解决方案,昏昏沉沉睡