使用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 简单实现前端权限控制的示例
Dec 25 Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
vue穿梭框实现上下移动
Jan 29 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
ant design vue的form表单取值方法
Jun 01 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
js 深拷贝函数
2008/12/04 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
下载官网python并安装的步骤详解
2019/10/12 Python
flask项目集成swagger的方法
2020/12/09 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
安全施工责任书
2014/08/25 职场文书
委托书的写法
2014/08/30 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android