Vue Vuex Persist Store(数据持久化) - 简化版
文章目录
官方仓库: championswimmer/vuex-persist: A Vuex plugin to persist the store. (Fully Typescript enabled)
VuexPersistence
原理就一句话:通过 vuex.subscribe 订阅一个函数,在每次 commit mutation 的时候执 行去更新 persist store。
构造函数:
|
|
存储源
初始化,并且决定用哪种方式存储数据,主要有三种方式:
用户定义存到哪里 options.storage
H5 的 storage api localStorage 本地存储
MockStorage 库内部的一个封装,内存存储方案
|
|
[save|restore]State
这两个函数直接操作 store 存储源。
|
|
plugin(store)
给 vuex 使用的一个函数
|
|
实现:
|
|
subscriber(store)
|
|
vuex subscribe:
|
|
有了上面的 vuex 源码部分,再来看这 vuex-persist 的 subscribe 干了啥
|
|
这里等于是给 vuex this._subscribers 注入了一个函数,这个函数会在每次 vuex commit mutation 的时候去执行来更新 store 里面的 state。
|
|
modules
支持多模块 - 对应了 vuex 的 modules。
|
|
queue 队列
一个简单的队列刷新类:
|
|
任务入列的时候,会检测队列是不是正在刷新,如果是只执行入列操作,这里返回一个
Promise.resolve()
方便后面任务的依次进行。
flushQueue()
将出列行为封装成一个函数,来达到所有任务按入列顺序执行。