首页 > 其他分享 >vuex持久化方案(vuex-persistedstate)

vuex持久化方案(vuex-persistedstate)

时间:2022-11-21 16:44:10浏览次数:47  
标签:插件 持久 存储 默认 persistedstate vuex

安装

npm install vuex-persistedstate --save

介绍

Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
这篇文章主要介绍了Vuex持久化插件(vuex-persistedstate)-解决刷新数据消失的问题
页面刷新后,想保存页面未保存的数据。我们总是习惯于放在浏览器的sessionStorage和localStorage中。但是用了vue后,vuex便可以被应用了。

vuex优势:相比sessionStorage,存储数据更安全,sessionStorage可以在控制台被看到。

vuex劣势:在F5刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。

vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据持久化,也可以通过插件-vuex-persistedstate。

1.手动利用HTML5的本地存储

方法

vuex的state在localStorage或sessionStorage或其它存储方式中取值 在mutations,定义的方法里对vuex的状态操作的同时对存储也做对应的操作。这样state就会和存储一起存在并且与vuex同步
问题

最直观的就是,手动写比较麻烦。

利用vuex-persistedstate插件

插件的原理其实也是结合了存储方式,只是统一的配置就不需要手动每次都写存储方法

npm install vuex-persistedstate --save
引入及配置

在store下的index.js中

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState()]
})
默认存储到localStorage

想要存储到sessionStorage,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState({
  storage: window.sessionStorage
 })]
})
想使用cookie同理

默认持久化所有state

指定需要持久化的state,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState({
  storage: window.sessionStorage,
  reducer(val) {
   return {
   // 只储存state中的assessmentData
   assessmentData: val.assessmentData
  }
  }
 })]
vuex引用多个插件的写法

譬如:vuex提示的插件和持久化的插件一起使用,配置如下

API

createPersistedState([options])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:

key :存储持久状态的键。(默认:vuex)

paths :部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的。(默认:[])

reducer :一个函数,将被调用来基于给定的路径持久化的状态。默认包含这些值。

subscriber :一个被调用来设置突变订阅的函数。默认为store => handler => store.subscribe(handler)

storage :而不是(或与)getState和setState。默认为localStorage。

getState :将被调用以重新水化先前持久状态的函数。默认使用storage。

setState :将被调用来保持给定状态的函数。默认使用storage。

filter :将被调用来过滤将setState最终触发存储的任何突变的函数。默认为() => true

标签:插件,持久,存储,默认,persistedstate,vuex
From: https://www.cnblogs.com/guozhiqiang/p/16911867.html

相关文章

  • 四.docker持久化存储
    四、docker持久化存储Docker的镜像是只读的,但是容器是可写的,我们可以将数据写入到容器,不过一旦容器删除数据就会丢失,所以要将数据实现持久化存储。默认情况下,容器(contain......
  • 使用vite + vue3 + ant-design-vue + vue-router + vuex 创建一个后台管理应用
    使用vite+vue3+ant-design-vue+vue-router+vuex创建一个管理应用的记录使用vite创建项目我创建的node版本是v16.17.1使用NPM或者YARN安装中选择模板和......
  • 使用vite + vue3 + ant-design-vue + vue-router + vuex 创建一个管理应用
    使用vite+vue3+ant-design-vue+vue-router+vuex创建一个管理应用的记录使用vite创建项目我创建的node版本是v16.17.1使用NPM或者YARN安装中选择模板和......
  • Kubernetes_k8s持久化存储(亲测可用)
    一、前言新建具有两个节点的k8s集群,主节点(master节点/m节点)的ip地址是192.168.100.150,从节点(w1节点)的ip地址是192.168.100.151。本文操作如何将pod中的containe......
  • Redis持久化
    Redis持久化使用Redis作为数据缓存,缓存的目标主要是那些需要经常访问的数据,或计算复杂而耗时的数据。缓存的效果就是减少了数据库读的次数,减少了复杂数据的计算次数,从而提......
  • Vuex详解(基础)
    Vue详解---来自实习生的倔强一、Vuex一般用在什么地方?vuex使用场景Vuex可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。如果不打......
  • 可持久化线段树
    可持久化线段树可持久化数据结构总是可以保留每一个历史版本,并且支持操作的不可变特性部分可持久化所有版本都可以访问,但是只有最新版本可以修改完全可持久化所有版本......
  • vuex中的mapMutations和mapActions
    <template><divclass="count"><h2>当前求和为:{{sum}}</h2><h3>当前求和放大十倍为为:{{bigSum}}</h3><h3>我在:{{address}}学习:{{subject}}<......
  • 聊聊Vuex原理
    背景Vuex是一个专为Vue.js应用程序开发的状态管理模式。Vuex是专门为Vue.js设计的状态管理库,以利用Vue.js的细粒度数据响应机制来进行高效的状态更新。如果你已......
  • vuex中的getters
    当state中的数据需要经过加工后在使用//该文件用于创建vuex中的store//引入vueximportVuefrom'vue'importVuexfrom'vuex'//使用插件Vue.use(Vuex);//猪备ac......