详解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跑马灯悬停放大效果实现代码
Dec 12 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 Javascript
常用jQuery选择器总结
Jul 11 Javascript
js密码强度检测
Jan 07 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
Feb 20 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
Dec 26 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之readdir函数用法实例
2014/11/13 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python之pymysql的使用小结
2019/07/01 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Python request post上传文件常见要点
2020/11/20 Python
出国签证在职证明
2014/01/16 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
安全员岗位职责范本
2015/04/11 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
施工安全责任协议书
2016/03/23 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL