123456789101112131415161718192021222324252627282930313233343536373839 |
- const exclude = ['actions', 'getters', 'mutations', 'namespaced']
- export default function Presistent({ key, modules, modulesKeys }) {
- return (store) => {
- const localOldState = JSON.parse(localStorage.getItem(key) || '{}')
- const sessionOldState = JSON.parse(sessionStorage.getItem(key) || '{}')
- let oldState = {}
- Object.assign(oldState, localOldState, sessionOldState)
- if (Object.keys(oldState).length > 0) {
- for (const oldKey in oldState) {
- modules[oldKey] = oldState[oldKey]
- }
- store.replaceState(modules)
- }
- store.subscribe((mutation, state) => {
- // 判断是否需要缓存数据至localStorage
- if (modulesKeys.local.length > 0) {
- const localData = setData(store.state, modulesKeys.local)
- localStorage.setItem(key, JSON.stringify(localData))
- } else {
- localStorage.removeItem(key)
- }
- // 判断是否需要缓存数据至sessionStorage
- if (modulesKeys.session.length > 0) {
- const sessionData = setData(store.state, modulesKeys.session)
- sessionStorage.setItem(key, JSON.stringify(sessionData))
- } else {
- sessionStorage.removeItem(key)
- }
- })
- }
- }
- function setData(state, module) {
- let data = {}
- for (const i of module) {
- data[i] = state[i]
- }
- return data
- }
|