解决Vuex持久化插件-在F5刷新页面后数据不见的问题

解决Vuex持久化插件-在F5刷新页面后数据不见的问题

在之前的开发中, 咱们老是习惯于放在浏览器的sessionStorage和localStorage中。可是用了vue后,vuex即可以被应用了。
  • 优势:vuex相对sessionStorage,存储数据更安全,sessionStorage可在浏览器控制台看到
  • 缺点:在F5刷新页面后,vuex会从新更新state,因此,存储的数据会丢失。
解决方案: 使用vuex-persistedstate插件
原理:
  1. 将vuex的state存在localStorage或sessionStorage或cookie中一份
  2. 刷新页面的一瞬间,vuex数据消失,vuex回去sessionStorage中哪会数据,变相的实现了数据刷新不丢失
使用:
安装
npm install vuex-persistedstate  --save
引入及配置
在store下的index.js中
import createPersistedState from "vuex-persistedstate" const store = new Vuex.Store({ // ... plugins: [createPersistedState()]
})

想要存储到sessionStorage,配置以下:

import createPersistedState from "vuex-persistedstate" const store = new Vuex.Store({ // ...
 plugins: [createPersistedState({ storage: window.sessionStorage })] })
vuex-persistedstate默认持久化全部state,指定须要持久化的state,配置以下:
import createPersistedState from "vuex-persistedstate" const store = new Vuex.Store({ // ...
 plugins: [createPersistedState({ storage: window.sessionStorage, reducer(val) { return { // 只储存state中的user
 user: val.user } } })]

注意:若是此刻想配置多个选项,将plugins写成一个一维数组,否则会报错。html

import createPersistedState from "vuex-persistedstate" import createLogger from 'vuex/dist/logger'
// 判断环境 vuex提示生产环境中不使用
const debug = process.env.NODE_ENV !== 'production' const createPersisted = createPersistedState({ storage: window.sessionStorage }) export default new Vuex.Store({ // ...
  plugins: debug ? [createLogger(), createPersisted] : [createPersisted] }) 复制代码
相关文章
相关标签/搜索