摘要:众所周知,的一个全局状态管理的插件,但是在浏览器刷新的时候,内存中的会释放,通常的解决办法就是用本地存储的方式保存数据,然后再初始化的时候再赋值给,手动存再手动取会觉得很麻烦,这个时候就可以使用的插件插件地址欢迎插件原理有一个方法每次在
众所周知,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://www.ucloud.cn/yun/103487.html
摘要:可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据持久化,也可以通过插件。 vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据持久化,也可以通过插件-vuex-persistedstate。 欢迎来点点我的个人博客showImg(https://user-...
摘要:接下来我们会从上述两个功能点出发,完成一个持久化插件。在我们的持久化插件中,就是在这个函数内部对数据进行持久化操作。而则整个被监听,所以任何对于的改动都会被持久化并能够被恢复。 在做 Vue 相关项目的时候,总会遇到因为页面刷新导致 Store 内容丢失的情况。复杂的项目往往涉及大量的状态需要管理,如果仅因为一次刷新就需要全部重新获取,代价也未免太大了。 那么我们能不能对这些状态进行本...
摘要:先说点什么和路由拦截这一块捣鼓的有一段时间了总算是爬出来了特地来分享一下首先声明没有什么基础介绍用的是登录状态存储的方法进入正题刷新刷新相当与重启项目,之前获取到的数据也只是通过暂存起来,项目关闭时就不见了,这有些像电脑重启,存储在的数据会 先说点什么 vuex和路由拦截这一块捣鼓的有一段时间了,总算是爬出来了,特地来分享一下,首先声明没有什么基础介绍,用的是登录状态存储session...
阅读 2016·2021-11-15 11:38
阅读 2050·2019-08-30 15:55
阅读 2183·2019-08-30 15:52
阅读 3169·2019-08-30 14:01
阅读 2685·2019-08-30 12:47
阅读 1131·2019-08-29 13:17
阅读 1062·2019-08-26 13:55
阅读 2631·2019-08-26 13:46