vue項目常見之四:store(Vuex)封裝


import Vue from 'vue'
import Vuex from 'vuex'
import { setItem, getItem } from '@/utils/storage'
import decodeJwt from 'jwt-decode'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 登錄用戶,一個對象,包含 token 信息
    user: getItem('user'),
    cachedPages: ['TabBar']
  },

  mutations: {
    setUser (state, data) {
      // 解析 JWT 中的數據(需要使用用戶ID)
      if (data && data.token) {
        const user = decodeJwt(data.token)
        data.user_id = user.user_id
      }

      state.user = data

      // 為了防止刷新丟失 state 中的 user 狀態,我們把它放到本地存儲
      setItem('user', state.user)
    },

    setKeepAlive (state, data) {
      state.keepAlive = data
    },

    removeCachePage (state, pageName) {
      const index = state.cachedPages.indexOf(pageName)
      if (index !== -1) {
        state.cachedPages.splice(index, 1)
      }
    },

    addCachePage (state, pageName) {
      state.cachedPages.push(pageName)
    }
  },
  actions: {}
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM