$store.getters調用不執行


$store.getters調用不執行

api:https://vuex.vuejs.org/zh/guide/getters.html

場景:

在登錄時將登錄得到的用戶信息存儲在vuex的state和sessionStorage中。使用時在state中獲取,當因為刷新等原因導致state中沒有數據時,去sissionStorage中獲取。

錯誤:

登錄后,需要獲取用戶信息時,getters中屬性的方法不會執行。只是去getters中獲取緩存

解決方法:

將getters中的屬性改寫成方法,這樣每次調用的時候就會執行,去從新獲取數據。

getloginInfor: (state) =>  () => {}

代碼:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    /* 登錄用戶信息 */
    loginInfor: {
    }
  },
  mutations: {
    setloginInfor (state, msg) {
      state.loginInfor = msg
    }
  },
  actions: {

  },
  getters: {
    getloginInfor: (state) => () => {
      // 先從state里面獲取用戶登錄信息
      let loginInfo = state.loginInfo
      // 如果 state 里面獲取不到,那么從localStorage里面獲取
      if (!loginInfo) {
        loginInfo = JSON.parse(sessionStorage.getItem('loginInfo'))
      }
      return loginInfo
    }
  }
})

使用:

this.$store.getters.getloginInfor()

 

 

鑽研不易,轉載請注明出處。。。。。。

 


免責聲明!

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



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