首页
学习
活动
专区
圈层
工具
发布

vuex持久化插件-解决浏览器刷新数据消失问题

众所周知,vuex的一个全局状态管理的插件,但是在浏览器刷新的时候,内存中的state会释放,通常的解决办法就是用本地存储的方式保存数据,然后再vuex初始化的时候再赋值给state,手动存再手动取会觉得很麻烦...,这个时候就可以使用vuex的插件vuex-solidification 插件地址: vuex-solidification , 欢迎star 插件原理 vuex有一个hook方法:store.subscribe...((mutation, state) => {}) 每次在mutation方法执行完之后都会调用这个回调函数,返回执行完毕之后的state 使用方法 安装 npm install --save vuex-solidification...复制代码 引入及配置 import Vue from 'vue' import Vuex from 'vuex' import count from '....pos: 1 } plugins: [ // 默认存储所有state数据到localstorage createPersistedState()

84510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    vuex在页面刷新后数据被清除

    用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失 产生原因 其实很简单,因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store...)中 很显然,第一种方案基本不可行,除非项目很小或者vuex存储的数据很少。...vue是单页面应用,操作都是在一个页面跳转路由;sessionStorage可保证打开页面时sessionStorage的数据为空,而如果是localStorage则会读取上一次打开页面的数据。...因为我们是只有在刷新页面时才会丢失state里的数据,想法在点击页面刷新时先将state数据保存到sessionStorage,然后才真正刷新页面 beforeunload这个事件在页面刷新时先触发的。...$store.state,JSON.parse(sessionStorage.getItem("store")))) } //在页面刷新时将vuex里的信息保存到sessionStorage

    4.1K00

    前端Bug实录:为什么表格筛选条件在刷新时神秘消失?

    问题背景 在开发一个充电站订单管理系统时,我遇到了一个奇怪的问题:表格初始化时能正确筛选出type=6(充电订单)的数据,但点击刷新按钮后,筛选条件失效,显示了所有类型的订单。...Bug现象 ✅ 首次加载:正确显示type=6的充电订单 ❌ 点击刷新:显示所有类型的订单,筛选条件失效 每次刷新:筛选条件都被重置 代码现场 表格初始化配置 const hqTable = new...筛选条件存储结构脆弱 筛选条件存储在响应式对象中,容易被意外修改: this.table.filter.search = [...] // 没有保护机制 2....刷新逻辑缺陷 TableHeader组件的刷新操作: 'refresh': () => { this.table.data = [] // 清空数据 this.getIndex()...调试技巧 使用JSON序列化打印响应式对象 关键节点添加日志记录数据流 监听数据变化追踪问题源头 预防措施 代码层面 添加状态验证函数 validateTableState() { if (!

    15710

    Vuex页面刷新的数据丢失问题

    Vuex页面刷新的数据丢失问题 1、问题描述 2、解决方案:使用sessionStorage   在实际项目中,经常会遇到多个组件需要访问同一个数据的情况,且都需要根据数据的变化作出响应,而这些组件之间可能并不是父子组件这种简单的关系...1、问题描述 Vuex用起来确实很舒服,但是今天碰到了个问题,就是我将JWT和一些权限字符串使用store保存的时候,刷新页面之后这些值就没了,由于我后端集成了SpringSecurity,所以每次请求我都会去验证...JWT,如果刷新页面的话,后续请求头中就没有token,就会导致报错。   ...localStorage数据生命周期是永久,不手动清除不会消失,所以不推荐使用   修改store/index.js配置如下: import {createStore} from 'vuex' import...中的state 此时再刷新页面:   可以看到,数据仍然在,问题解决。

    2.5K30

    Vuex数据页面刷新丢失问题解决方案

    用Vue做项目开发很久了,对于vuex能用、会用,但是因为状态脱离页面和刷新丢失两个原因,一直都有种抵触,特别是一些简单的数据都是通过query或者本地存储就解决了,然而对于一些复杂内容,不可避免的还是要使用...Vuex去处理(真香),但是刷新丢失的问题,的确叫人头大。...最近闲下来,我们来研究下怎么干掉这个问题~ 不大了解Vuex的同学,可以先去官网溜溜 由于Vuex的数据是存储在内存中的,相当于memory cache,当页面刷新的时候内存被清空重载新内容,原来的数据就丢了...为了解决这个我们可以借助浏览器的本地存储来解决,此时我们有两个选择 localStorage 真·持久存储 sessionStorage 会话期存储 相比之下localStorage太持久了,不主动清除都会一直在,...函数重置了get逻辑,在这里使用proxy覆盖会有冲突,因此在初始化的时候直接读取sessionStorage。

    3.1K30

    vuex + sessionstorage 解决vue项目刷新后页面空白数据丢失

    soeasy,思考一个问题,为什么sessionstorage刷新页面不会清空数据呢?...,他被我自己预先设定成一个不在后端定义范围内的另一个值,比如任性的100000. vuex里边数据的一个特点时,刷新他就会回归初始化。...此时我还需要一个状态join,让我区分用户不是在初始化状态。这样,如果这两个条件同时成立,那就能断定他是刷新了。 那么这个状态值需要在一开始没有,页面初始化后才存在,且页面刷新不丢失。...: 因为如果数据设定以后,每次初始化进入页面后,开始这段判断时,该值就已经存在,也会被检测到,场景就会被当作刷新的情况。...,然后判断刷新的话直接提取数据即可。

    3.7K20

    神秘消失的4月份数据与手动【增量刷新】

    导入Power BI的数据自然也是两张表,再用UNION函数将两张表合起来,然后再将beforethismonth取消【包含在报表刷新中】,只在本地刷新thismonth表,这样就可以将之前的本地全部刷新时间由...还需要一个操作是:将beforethismonth更新一下数据: ? 但是! 我就是在修改完数据库后,并没有进行上面这个步骤进行数据刷新,导致我在desktop中丢失了整个3月的数据: ?...明白了原因后,再回到我们的模拟数据中刷新一下,本地数据也就更新到4月份数据了: ? 最后,我们来稍微说一下这两个刷新有什么不同: 点击主页的刷新按钮,其含义是通过刷新报表中的视觉对象来获取数据: ?...而如果在powerquery中取消【包含在报表刷新中】,代表刷新报表时并不会对此数据进行刷新。 而通过右键点击表-刷新数据,是很明确的从数据源获取最新数据,所以点击这个按钮后数据一定会更新到最新。...这就是为什么当我看到本地缺失3月份数据时,大脑中第一反应是为什么发生这么严重的数据问题其他人都没有发现,而等我看了一眼云端报告发现一切正常时,才恍然大悟,对他们来说一切都是风平浪静。

    77041

    【vue2】解决Vuex刷新页面数据丢失的问题

    最近写vue2 项目需要用到vuex, 但遇到一个问题,存进store里的数据刷新就丢失了,于是乎百度解决。将自己的感受与解决方法记录下来。...数据丢失的原因 vuex存储的数据只是在页面中,相当于全局变量,页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。...因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,vuex里面的数据就会被重新赋值。...解决的思路 将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie) 页面刷新后再从浏览器中取出 解决方法 利用第三方库进行持久化存储 1.安装...刷新页面数据丢失的问题 下班~

    24210

    vuex知识笔记,及与localStorage和sessionStorage的区别

    点击按钮加1的时候,vuex的值是及时更新了,其他需要刷新才能更新。总结一下: localStorage存储的值能够永久的存储在浏览器上。...sessionStorage存储的值依赖于当前窗口(当前会话), 只要当前窗口不关闭,它存储的数据就一直在。一旦关闭窗口或者打开新窗口,sessionStorage之前存储的数据就会消失。...之Getter和mapGetters   有时我们需要从store中的state种派生出一些状态,比如对store中的某一个状态(数据)进行筛选过滤,然后特别是当有多个组件需要用到这种状态(数据)时,“...//getter在通过属性访问时是作为Vue的响应式系统的一部分缓存其中的 doneTodosCount: (state, getters) => { console.log...//getter在通过方法访问时,每次都会去进行调用,而不会缓存结果。

    2.9K20

    # Vuex 原理解析

    Vuex 的状态储存是响应式的,当 Vue 组件从 store 中去读状态时,若 store 中状态发生变化,那么相应的组件也会得到更新。...# Vuex 核心思想 store:一个包含大部分状态的容器,他和全局变量的区别有两点不同: Vuex 状态时响应式的,数据会驱动视图发生变化。...# 初始化模块 Vuex 允许我们将 store 分割成多个模块(module),每个模块都有自己的 store mutation action getter。...$store 的实例化 把 store 想象成一个数据仓库,为了方便管理,将 store 拆分成了一些 modules,每个 moduels 又分别定义了 state,getter,mutations,...# 总结 Vuex 提供 API 包括数据的存取、语法糖、模块的动态更新等,值得学习。 # 最佳实践 Vuex 存储的数据是在内存中的,所以页面一刷新数据就消失了。

    46020

    前端知识点总结vue篇(下)

    通过Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息 给订阅者,触发相应的监听回调。...id=1,刷新页面id还存在。 params类似post,跳转之后url后面不会拼接参数,但是刷新页面id会消失。...b.vuex有state,getter,mutation,action,module等5种属性。 c.state:存放数据,是响应式的,若是store中的数据发生改变,依赖这个数据的组件也会更新。...$route.query.name 3.两者中query在刷新页面的时候参数不会消失 但[params] (https://so.csdn.net/so/search?...q=params&spm=1001.2101.3001.7020) 在刷新页面的时候参数会消失 可以考虑本地存储解决此问题 4.query传过来的参数会显示到地址栏中 而params传过来的参数不会显示到地址栏中

    1.1K20

    醉酒删库:几杯红酒下肚,7小时数据消失...

    来源 | 云头条 欧洲中部时间10月17日晚上10点45分左右,Keepthescore的创始人兼程序员在几杯红酒下肚后,无意中删除了生产数据库。超过300.00个记分牌及相关数据顿时人间蒸发。...欧洲中部时间晚上11点15左右即灾难发生后30分钟,恢复了正常,但是7个小时的记分牌数据永远消失了。...然而,擦除数据库的函数却是在清醒的时候编写的。一个函数删除了本地数据库,并从头开始创建所有必需的表。今天晚上,就在深夜编写一些代码之际,该函数连接到生产数据库,并清除了该数据库。 为什么?...Keepthescore已明白,拥有删除数据库的函数实在太危险了,不能到处乱用。问题是,您永远无法真正适当地测试安全机制,因为进行测试将意味着对生产数据库下手。...颇具讽刺意味的是,就在几天前,他们还刚发布了一条推文,内容正是有关删除生产数据库的可笑的文化基因: 往期推荐 前瞻:在 Java 16 中会带来哪些新特性?

    31320

    Vue 开发实录

    的循环在每次迭代时都为x创建新的绑定。 (4)必须先声明后使用,且不能重复定义。 const 用来定义常量的,不可声明不赋值、重复定义、重新赋值等。...组件通信 原则:项目比较大时采用Vuex来管理状态,$parent、$children和ref不能在跨域兄弟组件之间通信 通信方式 参考博客1 (1)父子组件通信:props和emit,节制的使用parent...$bus = vue } }; Vue.use(eventBus); 踩坑 需求:实现两个组件AB之间的数据通信,在页面A点击操作后跳转到页面B,需要将页面A中的数据携带到页面B中去。...这样的方式可以传递参数,但是页面一旦刷新,数据也会消失,如果需要将传递的数据持久化,可以采用vuex。 Vuex 定义 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。...Module Vuex 允许我们将 store 分割成模块(module),每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块。

    1.2K10

    vuex

    如果用户在B页面刷新数据,则Vuex的ID状态值会被清空无法获取,这里只能借助localStorage进行持久化进行处理(当然,如果直接使用localstorage进行持久化存储,而不借助Vuex也是可行的...我们在开发中会遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏。 多个视图依赖于同一状态。 来自不同视图的行为需要变更同一状态。...Getter(state, getters)可以从 store 中的 state 中派生出一些状态(如,对数据进行过滤操作)。...对于多个组件需要用同一属性时,意义重大!类似于计算属性,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。...表单处理 当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model 会比较棘手 在用户输入时,v-model

    3.4K21
    领券