vuex-persistedstate

vuex是在中大型项目中必不可少的状态管理组件,刷新会重新更新状态,但是有时候我们并不希望如此。例如全局相关的,如登录状态、token、以及一些不常更新的状态等,我们更希望能够固化到本地,减少无用的接口访问,以及更佳的用户体验。

安装起步

npm i -S vuex-persistedstate

目前的环境版本:

  1. "vue": "2.2.4",
  2. "vuex": "^2.5.0",
  3. "vuex-persistedstate": "^2.5.4"

vuex已经升级到了3.0.1,看了release note没有发现太过分的升级,预计不会出现不兼容的情况,有感兴趣的小伙伴可以升级体验一下。

配置使用

在vuex初始化时候,作为组件引入。

  1. import persistedState from 'vuex-persistedstate'
  2. export default new Vuex.Store({
  3. // ... plugins: [persistedState()]
  4. })

自定义存储方式

vuex-persistedstate默认使用localStorage来固化数据,一些特殊情况要如何应对呢?(如:safari的无痕浏览模式)
需要使用sessionStorage的情况

  1. plugins: [
  2. persistedState({ storage: window.sessionStorage })
  3. ]

使用cookie的情况

  1. import persistedState from 'vuex-persistedstate'
  2. import * as Cookies from 'js-cookie'
  3. export default new Vuex.Store({
  4. // ...
  5. plugins: [
  6. persistedState({
  7. storage: {
  8. getItem: key => Cookies.get(key),
  9. setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),
  10. removeItem: key => Cookies.remove(key)
  11. }
  12. })
  13. ]
  14. })

参考资料