详解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入门教程(5) js Screen屏幕对象
Jan 31 Javascript
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
JS冒泡事件的快速解决方法
Dec 16 Javascript
javascript获取URL参数与参数值的示例代码
Dec 20 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
JavaScript中undefined和null的区别
May 03 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 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
用缓存实现静态页面的测试
2006/12/06 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php实现评论回复删除功能
2017/05/23 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
罚款通知怎么写
2015/04/22 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
创业计划书之酒店
2019/08/30 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
详解jQuery的核心函数和事件处理
2022/02/18 jQuery