Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题


Posted in Javascript onApril 16, 2019

页面刷新后,想保存页面未保存的数据。我们总是习惯于放在浏览器的sessionStorage和localStorage中。但是用了vue后,vuex便可以被应用了。

vuex优势:相比sessionStorage,存储数据更安全,sessionStorage可以在控制台被看到。

vuex劣势:在F5刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。

vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据持久化,也可以通过插件-vuex-persistedstate。

1.手动利用HTML5的本地存储

方法

  • vuex的state在localStorage或sessionStorage或其它存储方式中取值
  • 在mutations,定义的方法里对vuex的状态操作的同时对存储也做对应的操作。这样state就会和存储一起存在并且与vuex同步

问题

最直观的就是,手动写比较麻烦。

2.利用vuex-persistedstate插件

插件的原理其实也是结合了存储方式,只是统一的配置就不需要手动每次都写存储方法

使用方法

安装

npm install vuex-persistedstate --save

引入及配置

在store下的index.js中

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState()]
})

默认存储到localStorage

想要存储到sessionStorage,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState({
  storage: window.sessionStorage
 })]
})

想使用cookie同理

默认持久化所有state

指定需要持久化的state,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState({
  storage: window.sessionStorage,
  reducer(val) {
   return {
   // 只储存state中的assessmentData
   assessmentData: val.assessmentData
  }
  }
 })]

vuex引用多个插件的写法

譬如:vuex提示的插件和持久化的插件一起使用,配置如下

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]
})

plugins要是一个一维数组不然会解析错误

API

createPersistedState([options])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:

key <String>:存储持久状态的键。(默认:vuex)

paths <Array>:部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的。(默认:[])

reducer <Function>:一个函数,将被调用来减少基于给定的路径持久化的状态。默认包含这些值。

subscriber <Function>:一个被调用来设置突变订阅的函数。默认为store => handler => store.subscribe(handler)

storage <Object>:而不是(或与)getState和setState。默认为localStorage。

getState <Function>:将被调用以重新水化先前持久状态的函数。默认使用storage。

setState <Function>:将被调用来保持给定状态的函数。默认使用storage。

filter <Function>:将被调用来过滤将setState最终触发存储的任何突变的函数。默认为() => true

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js查找父节点的简单方法
Jun 28 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
Javascript进制转换实例分析
May 14 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
SVG动画vivus.js库使用小结(实例代码)
Sep 14 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
谈谈JS中的!!
Dec 07 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
js+cavans实现图片滑块验证
Sep 29 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 #Javascript
一些手写JavaScript常用的函数汇总
Apr 16 #Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 #Javascript
理理Vue细节(推荐)
Apr 16 #Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 #Javascript
js实现删除li标签一行内容
Apr 16 #Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 #Javascript
You might like
Php header()函数语法及使用代码
2013/11/04 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
历史博物馆观后感
2015/06/05 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技