详解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 相关文章推荐
基于jquery的cookie的用法
Jan 10 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
Nov 07 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
JS实现数字格式千分位相互转换方法
Aug 01 Javascript
前端面试题及答案整理(二)
Aug 26 Javascript
vue.js指令和组件详细介绍及实例
Apr 06 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 Javascript
JavaScript实现简单图片切换
Apr 29 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&&mysql)一
2006/10/09 PHP
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
jquery的each方法使用示例分享
2014/03/25 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
浅析java线程中断的办法
2018/07/29 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python fabric使用笔记
2015/05/09 Python
深入解析Python中的上下文管理器
2016/06/28 Python
Python 操作文件的基本方法总结
2017/08/10 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
详解python多线程之间的同步(一)
2019/04/03 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
机电专业大学生求职信
2013/10/04 职场文书
个性发展自我评价
2014/02/11 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript