详解vuex持久化插件解决浏览器刷新数据消失问题


Posted in Javascript onApril 15, 2019

众所周知,vuex的一个全局状态管理的插件,但是在浏览器刷新的时候,内存中的state会释放,通常的解决办法就是用本地存储的方式保存数据,然后再vuex初始化的时候再赋值给state,手动存再手动取会觉得很麻烦,这个时候就可以使用vuex的插件vuex-solidification

插件地址: vuex-solidification , 欢迎star

插件原理

vuex有一个hook方法:store.subscribe((mutation, state) => {}) 每次在mutation方法执行完之后都会调用这个回调函数,返回执行完毕之后的state

使用方法

安装

npm install --save vuex-solidification

引入及配置

import Vue from 'vue'
import Vuex from 'vuex'
import count from './count/index.js';
import createPersistedState from 'vuex-solidification';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: {
      value: 0,
      num: 1
    },
    pos: 1
  }
  plugins: [ // 默认存储所有state数据到localstorage
    createPersistedState()
  ]
});

插件参数说明

createPersistedState({options}) : Function

options里面可以有:

key: String 存储到localStorage, sessionStorage 中对象的key,默认为vuex

local: Object 和 session: Object, 分别代表localStorage的配置和sessionStorage的配置

local 和 session 里面可以有: include: Array 和 exclude: Array

配置例子

createPersistedState({
  local: {
    include: ['count.value'] 
  }
})
/* 
  hook钩子触发之后,localstorage里面存储的对象为:
  {
    count: {
      value: 0,
    }
  }
*/


createPersistedState({
  local: {
    exclude: ['count.value'] 
  }
})
/* 
  hook钩子触发之后,localstorage里面存储的对象为:
  {
    count: {
      num: 1
    },
    pos: 1
  }
*/


createPersistedState({
  session: {
    include: ['count.value'] 
  }
})
/* 
  hook钩子触发之后,sessionstorage里面存储的对象为:
  {
    count: {
      value: 0,
    }
  }
*/


createPersistedState({
  session: {
    exclude: ['count.value'] 
  }
})
/* 
  hook钩子触发之后,sessionstorage里面存储的对象为:
  {
    count: {
      num: 1
    },
    pos: 1
  }
*/

createPersistedState({
  session: {
    include: ['count'] 
  },
  local: {
    include: ['pos']
  }
})
/* 
  hook钩子触发之后,
  sessionstorage里面存储的对象为:
  {
    count: {
      value: 0,
      num: 1
    },
  }
  sessionstorage里面存储的对象为:
  {
    pos: 0
  }
*/

代码例子

Check out the example on CodeSandbox.

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

Javascript 相关文章推荐
javascript五图轮播切换实用版
Aug 17 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 Javascript
Vue 配合eiement动态路由,权限验证的方法
Sep 26 Javascript
小程序点击图片实现自动播放视频
May 29 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
Vue实现简易计算器
Feb 25 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
vue-cli项目使用mock数据的方法(借助express)
Apr 15 #Javascript
说说Vuex的getters属性的具体用法
Apr 15 #Javascript
vue 中Virtual Dom被创建的方法
Apr 15 #Javascript
详解jQuery中的getAll()和cleanData()
Apr 15 #jQuery
详解javascript对数组和json数组的操作
Apr 15 #Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 #Javascript
详解小程序设置缓存并且不覆盖原有数据
Apr 15 #Javascript
You might like
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
php三元运算符知识汇总
2015/07/02 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php命令行模式代码实例详解
2021/02/26 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
学术诚信承诺书
2014/05/26 职场文书
机关职员工作检讨书
2014/10/23 职场文书
裁员通知
2015/04/25 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript