使用vuex-persistedstate本地存储vuex


Posted in Vue.js onApril 29, 2022

vuex-persistedstate将vuex本地存储

使用场景

最近在做Vue项目中的登录模块,登陆成功后获取到token,将token存储在vuex中,然而我发现切换路由后vuex中的数据都恢复默认了,原来页面刷新之后vuex的数据都会恢复默认。而后面进行鉴权处理需要token,于是我们要将vuex中的数据进行本地存储。

这里就用到了vuex持久化插件vuex-persistedstate

Vuex-persistedstate

这个插件的原理结合了存储方式,只是统一配置后就不需要手动写存储方法了

使用方法:

安装

npm install vuex-persistedstate --save

在store下的index.js中引入配置

import { createStore } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
export default createStore({  
    state: {  },  
    mutations: {  },  
    actions: {  },  
    modules: {  },  
    plugins: [    
        createPersistedState(),  
    ],
})

这样是默认存储到localStorage,如果想要存储到sessionStorage,配置如下

import { createStore } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
export default createStore({  
    state: {  },  
    mutations: {  },  
    actions: {  },  
    modules: {  },  
    plugins: [    
        // 把vuex的数据存储到sessionStorage    
        createPersistedState({      
            storage: window.sessionStorage,    
        }),  
    ],
})

默认持久化所有的state,如果想要存储指定的state,配置如下

import { createStore } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
export default createStore({  
    state: {  },  
    mutations: {  },  
    actions: {  },  
    modules: {  },  
    plugins: [    
        // 把vuex的数据存储到sessionStorage    
        createPersistedState({      
            storage: window.sessionStorage,      
            reducer(val) {        
                return {          
                    // 只存储state中的userData          
                    userData: val.userData        
                }      
            }    
        }),  
    ],
})

API

  • key:存储持久状态的key(默认vuex)
  • paths:部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的。(默认:[])
  • reducer:一个函数,将被调用来基于给定的路径持久化的状态。默认包含这些值。
  • subscriber:一个被调用来设置突变订阅的函数。默认为store => handler => store.subscribe(handler)
  • storage:而不是(或与)getState和setState。默认为localStorage。
  • getState:将被调用以重新水化先前持久状态的函数。默认使用storage。
  • setState:将被调用来保持给定状态的函数。默认使用storage。
  • filter:将被调用来过滤将setState最终触发存储的任何突变的函数。默认为() => true

vuex的本地存储

vuex是什么

Vuex是一个专为 Vue.js 应用程序开发的状态管理模式

vuex就是一个仓库 众所周知就是存放公共数据的一个地方 任何组件内的都可以使用vuex中的数据

vuex中的五大核心

  • State

存放Vuex store实例的状态对象,用于定义共享的数据, 以及设定的变量

  • Action

向store发出调用通知,去执行异步操作

  • Mutations

它只用于修改state中定义的状态变量 , 相当于vue当中methods 来进行逻辑的代码操作

  • Modules

对state进行分类处理,相当于模块

  • getters

外部程序通过它获取变量的具体值,或者在取值前做一些计算(可以认为是store的计算属性)

  • plugins

这个是数组展示 而不是以对象形式展示 ,数组当中是对象的形式 数组当中存放vuex的本地存储

  • vuex-persist

是vuex是一个插件 数据的缓存, 跟localStorage是一个本质的意思,将数据存储在用户的本地,当然这个插件的特性只能在vuex当中使用,在vue中就使用不了

那么 vuex-persist 如何使用

在终端当中下载

cnpm install vuex-persist -save

下载完成后 还需要在vuex当中引入

import vuexPersist from 'vuex-persist';

引入之后需要在 export default 当中 实例化出

plugins:[
    new vuexPersist({
        localstorage:window.localStorage,
    }).plugin,
],

new 一个对象出 对象中写入 localStorage

new 出的对象需要跟引入的 名字相同

当然vuex的本地存储还有一种方式

以上方式相对来说复杂

在终端当中直接下载

cnpm install vuex-persistedstate -save

在plugins 中直接调用即可 这种方法先对简单 不需要再去new一下

plugins: [
Persist()
]

Tags in this post...

Vue.js 相关文章推荐
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
vuex的使用步骤
Jan 06 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
如何优化vue打包文件过大
Apr 13 Vue.js
详解Vue3使用axios的配置教程
Apr 29 #Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 #Vue.js
vue里使用create, mounted调用方法
vue elementUI批量上传文件
Apr 26 #Vue.js
vue.js 使用原生js实现轮播图
Apr 26 #Vue.js
如何vue使用el-table遍历循环表头和表体数据
vue 把二维或多维数组转一维数组
Apr 24 #Vue.js
You might like
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
python执行子进程实现进程间通信的方法
2015/06/02 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
django项目搭建与Session使用详解
2018/10/10 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
Python插件机制实现详解
2020/05/04 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
大学生求职简历的自我评价
2013/10/21 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
中学教师请假制度
2014/02/03 职场文书
中学生个人自我评价
2014/02/06 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
2014年招生工作总结
2014/11/26 职场文书
专项资金申请报告
2015/05/15 职场文书
教师节表彰会主持词
2015/07/06 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
解析MySQL索引的作用
2022/03/03 MySQL