2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
前幾天幾Vue2的時(shí)候剛好遇到這個(gè)問(wèn)題現(xiàn)在已經(jīng)基本解決了。
如下解決方法。在next中,vue提供了一個(gè)vm的實(shí)例。你可以根據(jù)這個(gè)實(shí)例調(diào)用$store中的dispatch,
但是如果你足夠細(xì)心的話,你可能會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題。在路由跳轉(zhuǎn)的時(shí)候,這時(shí)候的vuex的數(shù)據(jù)存儲(chǔ)是無(wú)法回滾的,我自己的功能是在登陸完的時(shí)候,進(jìn)入到界面之前就必須請(qǐng)求數(shù)據(jù)。這邊的回滾是使用vue-devtool,你甚至發(fā)現(xiàn)根本沒(méi)有BaseState發(fā)生過(guò)。
以下是針對(duì)你的問(wèn)題解決方法。望采納~如果有問(wèn)題可以提
第一種方法,這種方法無(wú)法捕獲到BaseState,不過(guò)沒(méi)關(guān)系,僅僅是沒(méi)法回滾,你本身也不需要回滾
beforeEnter: (to, from, next) => {
util.get('/api/user',{},(res) => {
USER_SIGNIN(res.data)
util.toast('登錄成功')
next(vm=>{
//store_data替換成你需要更新的狀態(tài)就可以了。
vm.$store.dispatch('store_data',res.data)
})
}, () => {
util.toast('獲取信息失敗')
})
}
第二種方法
beforeEnter: (to, from, next) => {
util.get('/api/user',{},(res) => {
USER_SIGNIN(res.data)
util.toast('登錄成功')
//使用路由元信息,保存你已經(jīng)下載到的信息,然后你可以在component created鉤子觸發(fā)時(shí),
//利用this.$store.dispatch('store_data',this.$route.meta.data)
to.meta.data = res.data
next(vm=>{})
}, () => {
util.toast('獲取信息失敗')
})
}
添加回答
舉報(bào)