详解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 文档的编码问题解决
Mar 01 Javascript
JQuery为textarea添加maxlength属性的代码
Apr 07 Javascript
鼠标右击事件代码(asp.net后台)
Jan 27 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
JavaScript的Date()方法使用详解
Jun 09 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
jquery dialog获取焦点的方法
Feb 09 Javascript
整理关于Bootstrap排版的慕课笔记
Mar 29 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
Sep 30 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 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
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python输入错误后删除的方法
2019/10/12 Python
详解Django admin高级用法
2019/11/06 Python
浅谈python出错时traceback的解读
2020/07/15 Python
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
创业计划书中要认真思考的问题
2013/12/28 职场文书
合作协议书
2014/04/23 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
导游词之五台山
2019/10/11 职场文书
Python django中如何使用restful框架
2021/06/23 Python