vuex持久化插件-解决浏览器刷新数据消失问题

vuex持久化插件-解决浏览器刷新数据消失问题

众所周知,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.



写在最后

欢迎交流,提issue和pr,

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100988.html原文链接:https://javaforall.net

(0)
上一篇 2021年7月4日 下午5:00
下一篇 2021年7月4日 下午6:00


相关推荐

  • java bufferedwriter 关闭_Java BufferedWriter.close()方法示例

    java bufferedwriter 关闭_Java BufferedWriter.close()方法示例JavaBufferedWriter.close()方法示例BufferedWriter的JavaBufferedWriter.close()方法的语法如下。publicvoidclose()throwsIOException示例在下面的代码中展示了如何使用BufferedWriter.close()方法。importjava.io.BufferedWriter;import…

    2022年5月10日
    35
  • Java安全之Weblogic内存马

    Java安全之Weblogic内存马0x00前言发现网上大部分大部分weblogic工具都是基于RMI绑定实例回显,但这种方式有个弊端,在WeblogicJNDI树里面能将打入的RMI后门查看

    2021年12月13日
    53
  • resize函数详解

    resize函数详解resize 函数的形式 voidresize InputArraysr OutputArrayd Sizedsize doublefx 0 doublefy 0 intinterpola INTER LINEAR 参数说明 src 原图 dst 目标图像 当参数 dsize 不为 0 时 dst 的大小为 size 否则 它的大小需要根据 src 的大小 参

    2026年3月19日
    2
  • Could not retrieve transation read-only status server「建议收藏」

    背景最近在部署一套完整的项目,部署过程中遇到很多的问题,在来总结一些如标题的这个错误!环境说明: 使用分布式数据库,使用的是mysql!### Cause: java.sql.SQLException: Could not retrieve transation read-only status server; SQL []; Could not retrieve tran…

    2022年2月27日
    59
  • PyCharm修改Python版本

    PyCharm修改Python版本如下图 记录要勾选 Makeavaliabl 然后查看是否加载出所有的第三方插件 会遇到插件安装后 运行还是找不到插件的问题 就是这里选择的不对 Pycharm 总是会自己修改 Baseinterper 路径 安装好后 在这里修改路径 看到有加载出来就可以了

    2026年3月26日
    2
  • 虚拟机安装ubuntu12.04LTS及相关设置和常见问题的解决

    虚拟机安装ubuntu12.04LTS及相关设置和常见问题的解决前几天达内的来我们学校给我们培训,学习的是C++,使用的是用虚拟机安装的ubuntu,我不喜欢用他们的,于是自己在自己的电脑上安装,我安装过14版本的ubuntu,不过很卡,后来安装12.04LTS,

    2022年7月2日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号