详解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中的事件处理
Nov 06 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
解决给dom元素绑定click等事件无效问题的方法
Feb 17 Javascript
js实现导航吸顶效果
Feb 24 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
浅谈vue 锚点指令v-anchor的使用
Nov 13 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 Javascript
一定要知道的 25 个 Vue 技巧
Nov 02 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
珊瑚虫IP库浅析
2007/02/15 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python使用循环实现批量创建文件夹示例
2014/03/25 Python
python 实时遍历日志文件
2016/04/12 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python读取ini配置文件过程示范
2019/12/23 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
python time.strptime格式化实例详解
2021/02/03 Python
建筑工程实习自我鉴定
2013/09/19 职场文书
计算机操作自荐信
2013/12/07 职场文书
微笑服务标语
2014/06/24 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
党小组推荐意见
2015/06/02 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技