Vuex持久化存储之vuex-persist

问题背景:

Vuex 解决了多视图之间的数据共享问题。但是运用过程中又带来了一个新的问题是,Vuex 的状态存储并不能持久化。也就是说当你存储在 Vuex 中的 store 里的数据,只要一刷新页面,数据就丢失了。

引入vuex-persist 插件,它就是为 Vuex 持久化存储而生的一个插件。不需要你手动存取 storage ,而是直接将状态保存至 cookie 或者 localStorage 中。具体用法如下:

pexels-photo-1211847.jpeg

安装:

npm install --save vuex-persist
or
yarn add vuex-persist

引入:

import VuexPersistence from 'vuex-persist'

先创建一个对象并进行配置:

const vuexLocal = new VuexPersistence({
    storage: window.localStorage
})

引入进vuex插件:

const store = new Vuex.Store({
  state: { ... },
  mutations: { ... },
  actions: { ... },
  plugins: [vuexLocal.plugin]
}) 

通过以上设置,在图3中各个页面之间跳转,如果刷新某个视图,数据并不会丢失,依然存在,并且不需要在每个 mutations 中手动存取 storage 。

vuex-persist 的详细属性:

属性 类型 描述
key string 将状态存储在存储中的键。默认: 'vuex'
storage Storage (Web API) 可传localStorage, sessionStorage, localforage 或者你自定义的存储对象. 接口必须要有get和set. 默认是: window.localStorage
saveState function (key, state[, storage]) 如果不使用存储,这个自定义函数将保存状态保存为持久性。
restoreState function (key[, storage]) => state 如果不使用存储,这个自定义函数处理从存储中检索状态
reducer function (state) => object 将状态减少到只需要保存的值。默认情况下,保存整个状态。
filter function (mutation) => boolean 突变筛选。看mutation.type并返回true,只有那些你想坚持写被触发。所有突变的默认返回值为true。
modules string[] 要持久化的模块列表。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 猪是六畜之首,又叫豚,猪肉就是家猪的肉。现在的家猪是有野猪驯化而来的,咱们国家的猪有100多个品种,猪肉以雄性猪肉...
    潘潘的成长之路阅读 537评论 0 1
  • 不知道从何时起,我就喜欢上了主持人这一个角色,但是由于不是专业出身,我并没有把它当做谋生的技能,而是转变成自己的一...
    爱折腾的双子阅读 720评论 0 2
  • 一、初相遇 纤纤玉手掀开厚厚的车窗帘,略显萧肃的春风裹挟着泥土的味道扑了满面,宁楚格深深的吸了口气,这才算感受到真...
    没见过连翘的白芷阅读 521评论 3 4
  • 目标词汇: classroom, playground, bathroom, cafeteria, gym, st...
    六六大叔阅读 294评论 0 0
  • 1.为什么要使用模块化? 2. CMD、AMD、CommonJS 规范分别指什么?有哪些应用 Commonjs:用...
    66dong66阅读 198评论 0 0