2 回答

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