详解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 相关文章推荐
node.js中使用q.js实现api的promise化
Sep 17 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
Jul 05 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
Sep 17 Javascript
JavaScript实现公告栏上下滚动效果
Mar 13 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
smarty实现多级分类的方法
2014/12/05 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Django权限设置及验证方式
2020/05/13 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
资料员岗位职责
2013/11/17 职场文书
乔迁之喜主持词
2014/03/27 职场文书
幼师个人总结范文
2015/02/28 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
小学家长意见怎么写
2015/06/03 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL