vue中pinia數(shù)據(jù)一直重復(fù)獲取之前的值的解決方法
概要
如果想讓pinia數(shù)據(jù)不會(huì)重復(fù)獲取之前的值需要手動(dòng)強(qiáng)制觸發(fā) Pinia store 的狀態(tài)更新。
場(chǎng)景描述
有個(gè)業(yè)務(wù)如果token有效期失效需要重新跳轉(zhuǎn)到login頁(yè)面。
技術(shù)細(xì)節(jié)
不進(jìn)行手動(dòng)刷新
路由守衛(wèi)
router.beforeEach( async(to: any, from: any, next: any) =>{ let userStore = useUserStore() let token = userStore.token; if(token){ try { // token有效期驗(yàn)證(能訪(fǎng)問(wèn)表示token有效) await userStore.queryUser(0,1) next() }catch (error){ //無(wú)效移除user信息并跳轉(zhuǎn)到登錄頁(yè) REMOVE_USER() next("/login") } }else if(to.path == "/login"){ next() }else { next("/login") } })
pinia數(shù)據(jù)
let useUserStore = defineStore("User", { state: (): any => { return { token: GET_USER(), menuList: constantRoutes, username: "", avatar: "" } }, actions: { refreshToken() { this.token = GET_USER(); }, // other actions}
根據(jù)以上代碼發(fā)現(xiàn)直接獲取pinia中的數(shù)據(jù),就算移除了user,數(shù)據(jù)還是保持沒(méi)移除之前的數(shù)據(jù)。導(dǎo)致重復(fù)執(zhí)行await userStore.queryUser(0,1);
把
try { await userStore.queryUser(0,1) next() }catch (error){ REMOVE_USER() next("/login") }
改為
try { await userStore.queryUser(0,1) next() }catch (error){ REMOVE_USER() userStore.refreshToken() next("/login") }
實(shí)現(xiàn)手動(dòng)刷新token的值獲取最新的值。
成功獲取到token的最新?tīng)顟B(tài),token失效跳轉(zhuǎn)到首頁(yè)。
以上就是vue中pinia數(shù)據(jù)一直重復(fù)獲取之前的值的解決方法的詳細(xì)內(nèi)容,更多關(guān)于vue pinia重復(fù)獲取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法
這篇文章主要介紹了Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法,需要的朋友可以參考下2018-06-06vue 項(xiàng)目引入echarts 添加點(diǎn)擊事件操作
這篇文章主要介紹了vue 項(xiàng)目引入echarts 添加點(diǎn)擊事件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09vue?動(dòng)態(tài)style?拼接寬度問(wèn)題
這篇文章主要介紹了vue?動(dòng)態(tài)style?拼接寬度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue+element下日期組件momentjs轉(zhuǎn)換賦值問(wèn)題解決
這篇文章主要介紹了vue+element下日期組件momentjs轉(zhuǎn)換賦值問(wèn)題,記錄下使用momentjs轉(zhuǎn)換日期字符串賦值給element的日期組件報(bào)錯(cuò)問(wèn)題,需要的朋友可以參考下2024-02-02簡(jiǎn)單學(xué)習(xí)vue指令directive
這篇文章主要和大家一起簡(jiǎn)單學(xué)習(xí)一下vue指令:directive,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11vue頁(yè)面中使用getElementsByClassName無(wú)法獲取元素的解決
這篇文章主要介紹了vue頁(yè)面中使用getElementsByClassName無(wú)法獲取元素的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue.js實(shí)戰(zhàn)之Vuex的入門(mén)教程
這篇文章主要給大家介紹了Vue.js實(shí)戰(zhàn)之Vuex的入門(mén)教程,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04