vuex用于管理项目中的全局状态,但是我们一刷新vuex中保存的全局状态就会被全部初始化,虽然我们也可以同事缓存到storage中做两步操作,但是vuex-persistedstate组件已经帮我们完成了同步更新

npm install vuex-persistedstate --save

然后用vuex中的plugins属性挂载


import createPersistedState from 'vuex-persistedstate'
export default new Vuex.Store({
  state,
  mutations,
  getters,
  plugins: [createPersistedState()]
})

在我们的localstorage中就会看到有一个vuex的key,值为{"showLogin":false,"navIndex":true,"token":"64c9bbf8541b47af8d891b20247ae6a3","nickName":"百宝箱","updataCart":false,"showLoading":false}的字符串的JSON数据

每次我们更新vuex的状态,localstorage中的vuex也会随之改变

API

createPersistedState([options])

使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:

  • key <String>:存储持久状态的键。(默认:vuex

  • paths <Array>:部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的。(默认:[]

  • reducer <Function>:一个函数,将被调用来减少基于给定的路径持久化的状态。默认包含这些值。

  • subscriber <Function>:一个被调用来设置突变订阅的函数。默认为store => handler => store.subscribe(handler)

  • storage <Object>:而不是(或与)getStatesetState。默认为localStorage。

  • getState <Function>:将被调用以重新水化先前持久状态的函数。默认使用storage

  • setState <Function>:将被调用来保持给定状态的函数。默认使用storage

  • filter <Function>:将被调用来过滤将setState最终触发存储的任何突变的函数。默认为() => true

自定义存储

如果在本地存储中存储Vuex存储的状态并不理想。人们可以轻松地实现功能使用cookie(或任何其他你可以想到的);

import { Store } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
import * as Cookies from 'js-cookie' const store = new Store({
// ...
plugins: [
createPersistedState({
storage: {
getItem: key => Cookies.get(key),
setItem: (key, value) => Cookies.set(key, value, { expires: 3, secure: true }),
removeItem: key => Cookies.remove(key)
}
})
]
})

实际上,可以传递任何遵循存储协议(getItem,setItem,removeItem等)的对象:

// 用sessionStorage替换localStorage
createPersistedState({ storage: window.sessionStorage })

vuex组件 vuex-persistedstate的更多相关文章

  1. 09:vuex组件间通信

    1.1 vuex简介 官网:https://vuex.vuejs.org/zh/guide/ 参考博客:https://www.cnblogs.com/first-time/p/6815036.htm ...

  2. [vuex]——使用vuex解决模块间传值问题

    二月的第四个周末,在家.受寒流的影响,深圳天气持续冰冻了好几天,天冷人就变得懒动,迷迷糊糊睡到了快十点,终于在饥饿的催促下起床. 和妹子吃完粥后,百无聊赖.透过窗户,发现太阳依旧没有露头的打算,我们也 ...

  3. [Vuex] Split Vuex Store into Modules using TypeScript

    When the Vuex store grows, it can have many mutations, actions and getters, belonging to different c ...

  4. vuex : 用vuex控制侧栏点亮状态

    上代码. xxx.vue <template> <div id="xxx"> <div class="layout"> &l ...

  5. 多组件共享-vuex —— 使用vuex 报错 actions should be function or object with ”handler“

    vuex分模块使用时出现的问题,单文件暂时没有用到 原因是在action 文件中没有任何定义(即:文件为空)或则 action 没有任何方法返回,将action在模块引用时去掉即可 转自:https: ...

  6. 【Vuex】vuex基本介绍与使用

    Vuex是什么? 官方解释: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集 ...

  7. [Vuex系列] - Vuex中的getter的用法

    Vuex 允许我们在store中定义“getter”(可以认为是store的计算属性).就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算. g ...

  8. 19.Vuex详细使用说明-一篇文章涵盖所有知识点

    vuex官网: https://vuex.vuejs.org/zh/ 一. 前言 不管是Vue,还是 React,都需要管理状态(state),比如组件之间都有共享状态的需要. 什么是共享状态? 比如 ...

  9. vuex 基本用法、兄弟组件通信,参数传递

    vuex主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值,需要先将值传给父组件,再传给子组件,异常麻烦. vuex大概思路:a=new Vue(),发射数据'msg':a.$emit ...

随机推荐

  1. [转]chrome developer tool 调试技巧

    这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的, 因为 google 也在不断完善chrome developer tool, 所以 chrome 版本不同可能稍有差别. ...

  2. linux里终端安转视频播放器的操作及显示

    [enilu@enilu ~]$ mplayerbash: mplayer: command not found[enilu@enilu ~]$ yum list | grep mplayer^C^C ...

  3. .NET开源工作流RoadFlow-表单设计-文本域

    点击工具栏上的 文本域 按钮可弹出文本域属性设置: 绑定字段:与数据表的某个字段绑定. 默认值:文本域初始值. 最大字符数:文本域可输入的最大字符数. 宽度:文本域的宽度,如:200px,80%. 高 ...

  4. Oracle 数据库异机恢复(归档模式)

    操作必须在服务器上进行(在192.168.12.71上执行) 0.按需要恢复的日期,把距恢复日期最近的全部备份和全部备份日期后的日志备份一同拷贝到需要恢复的机器上: 1.用RMAN登陆 C:\User ...

  5. Git学习1:Git起步

    本系列文章部分原理和命令相关内容是从 https://git-scm.com/book/zh/v2 摘录,软件实际使用是总结自己的实践经验成文. 1. 关于版本控制 版本控制是一种记录一个或若干文件内 ...

  6. Mantis修改“严重性”字段内容

    尝试修改Mantis提交bug时“严重性”字段的内容,将原来的内容修改为A,B,C...等级: 在mantis/config_defaults_inc.php文件中查找$g_severity_enum ...

  7. asyncio标准库1 Hello World

    利用asyncio的event loop,编写和调度协程 coroutine [,kəuru:'ti:n] n. 协程 Simple coroutine(调用1个协程) import asyncio ...

  8. 分布式check_mk切换远端图片到本地访问

    http://hermannsspace.de/wp/collect-pnp4nagios-data-in-check_mk-distributed-environment slave1数据目录 /o ...

  9. [图]Windows 10 Build 16273版本更新发布:新增可变式字体Bahnschrift

    在经历了长达三周的等待之后,微软于今天终于面向Windows Insider项目的Fast通道用户发布了Windows 10 Build 16273版本更新.事实上,微软应该会在两周前就应该发布新版本 ...

  10. python操作excel (openpyxl)

    最近看到好几次群里有人问xlwt.wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用of ...