首页IT科技vue的数据存储(Vuex数据持久化存储)

vue的数据存储(Vuex数据持久化存储)

时间2025-09-17 19:11:05分类IT科技浏览6939
导读:Vue项目中使用Vuex作为状态管理,相当于全局的变量存储,可以在所有的vue组件中共享数据、动态修改其状态。vuex是单向数据流,存在vuex中的变量都是响应式数据,组件中一般会通过computed来使用store中的状态、且有缓存...

Vue项目中使用Vuex作为状态管理                  ,相当于全局的变量存储                           ,可以在所有的vue组件中共享数据                  、动态修改其状态                  。vuex是单向数据流          ,存在vuex中的变量都是响应式数据         ,组件中一般会通过computed来使用store中的状态                            、且有缓存

但是当我们去刷新浏览器的时候                           ,store中的状态都会被清空         、重新初始化为最初的状态                   ,在某些情况下         ,我们可能需要将这些状态保存下来                           ,所以这篇来介绍如何让vuex或pinia的状态持久化存储

要实现持久化存储                   ,简单来说就是将其状态保存到localStorage或者sessionStorage中 

然后在给每个状态默认值的时候就从localStorage或sessionStorage中取就可以了也就是咱们直接手写实现,另外一种方式就是使用第三方插件(vuex-persistedstate或者vuex-persist)

方案一:使用sessionStorage或者localStorage存储

我这里是存在sessionStorage中                           ,首先写个类                            ,将存储方法简单封装一下,或者写个方法也可以                  ,甚至直接存都是可以的                            ,看个人喜好哈

utils/index.js 

export class SessionUtils { static get(key) { return JSON.parse(window.sessionStorage.getItem(key)) } static set(key, value) { window.sessionStorage.setItem(key, JSON.stringify(value)) } static remove(key) { window.sessionStorage.removeItem(key) } }

然后在vuex中的使用: 

import { SessionUtils } from @/utils/index.js export default { namespaced: true, state: { count: SessionUtils.get(count) || 0 }, mutations: { UPDATE_COUNT(state, count) { state.count++ SessionUtils.set(count, state.count) } } }

这样其实就可以了          ,每当我们去修改状态的时候                  ,都会往session中存储一下                           ,浏览器刷新的时候          ,就会先从 session中取         ,达到持久化存储的效果

方案二:使用第三方插件 

1. 安装 

$ npm install vuex-persistedstate

2. 使用 

import Vue from "vue"; import Vuex from "vuex"; import test from ./modules/test import user from ./modules/user // 引入插件 import createPersistedState from "vuex-persistedstate"; Vue.use(Vuex); export default new Vuex.Store({ modules: { test, user }, /* vuex数据持久化配置 */ plugins: [ createPersistedState({ // 存储方式:localStorage                  、sessionStorage                            、cookies storage: window.sessionStorage, // 存储的 key 的key值 key: "store", reducer(state) { //render错误修改 // 要存储的数据:本项目采用es6扩展运算符的方式存储了state中所有的数据 return { ...state }; } }) ] })

上面是将所有的store中的state状态都持久化存储了                           ,如果是想只持久化某一个模块的数据                   ,则将上面plugins修改为下面写法 

/* vuex数据持久化配置 */ plugins: [ createPersistedState({ // 存储方式:localStorage         、sessionStorage         、cookies storage: window.sessionStorage, // 存储的 key 的key值 key: "store", // 只持久化存储user模块的状态 paths: [user] }) ]

上面是用了vuex-persistedstate插件实现         ,使用vuex-persist这个应该也是可以的                           。

其实上面插件的原理跟咱们最上面的手写的一样                           ,也就是将状态存储到本地缓存                   ,达到持久化存储的效果,我自己用的时候                           ,可能都是自己手写存储就可                            ,当然完全可以使用插件,也是看自己喜好          。

上面写的例子都是Vuex3的版本                   ,也就是在vue2中使用的         。

Vue3中使用的Vuex4或者pinia也好                            ,都是适用的          ,实现持久化存储无非就是上面的思路                  ,都一样

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo的营销技巧(如何撰写具有吸引力的SEO策略与营销方案) matlab卷积神经网络代码(Matlab深度学习入门实例:从0搭建卷积神经网络CNN(附完整代码))