Newer
Older
XinYang_SanWei+RongYun / src / store / plugins.js
@张强云笔记本 张强云笔记本 on 17 Dec 2021 885 bytes 融云通话接入
/**
 * 1、自动化恢复session中的数据到store,
 * 2、自动同步vuex中的数据到session
 * @param {*} store
 */

const sessionStoragePlugin = store => {
  // 自动化恢复session中的数据到store
  const sessionState = {}
  Object.keys(window.sessionStorage).forEach(sessionName => {
    const obj = {}
    let getValue = window.sessionStorage.getItem(sessionName);
    obj[sessionName] = typeof (getValue) === 'string' ? getValue : JSON.parse(getValue);
    Object.assign(sessionState, obj)
  })
  store.replaceState(Object.assign({}, store.state, sessionState))

  // 自动同步vuex中的数据到session
  store.subscribe((mutation, state) => {

    Object.keys(state).forEach((stateName, index) => {
      window.sessionStorage.setItem(
        stateName,
        JSON.stringify(state[stateName])
      )
    })

  })
}

export default [sessionStoragePlugin]