详解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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
Jan 27 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
微信小程序模板template简单用法示例
Dec 04 Javascript
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和ACCESS写聊天室(八)
2006/10/09 PHP
mysql建立外键
2006/11/25 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php中cookie的使用方法
2014/03/29 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
如何在python中使用selenium的示例
2017/12/26 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
爱护公共设施的标语
2014/06/24 职场文书
困难补助申请报告
2015/05/19 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书