api:https://vuex.vuejs.org/zh/guide/getters.html
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的湟中網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
場景:
在登錄時將登錄得到的用戶信息存儲在vuex的state和sessionStorage中。使用時在state中獲取,當(dāng)因為刷新等原因?qū)е聅tate中沒有數(shù)據(jù)時,去sissionStorage中獲取。
錯誤:
登錄后,需要獲取用戶信息時,getters中屬性的方法不會執(zhí)行。只是去getters中獲取緩存
解決方法:
將getters中的屬性改寫成方法,這樣每次調(diào)用的時候就會執(zhí)行,去從新獲取數(shù)據(jù)。
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()
鉆研不易,轉(zhuǎn)載請注明出處。。。。。。
以上這篇解決$store.getters調(diào)用不執(zhí)行的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。