亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新手問個問題,路由里怎么調用vuex

新手問個問題,路由里怎么調用vuex

守候你守候我 2018-09-02 13:32:57
邏輯是這樣的,注冊功能不是提交方式,是oauth2模式token抓取回來后這是store/user代碼顯示routes.js里的部分代碼import { USER_SIGNIN } from '../store/user'...path: '/callback', //登錄meta: { auth: false },beforeEnter: (to, from, next) => {     util.get('/api/user',{},(res) => {     USER_SIGNIN(res.data)//這句是錯誤的,我應該怎么寫,才可以保存用戶信息到store里     這里要           util.toast('登錄成功')      }, () => {          util.toast('獲取信息失敗')      })1.這種方式我把route寫的很大,總覺得不好,我認為不需要渲染組件,所以在路由里處理就行了,有沒有好的寫法!2.路由里怎么調用vuex的USER_SIGNIN常量。我不知道怎么用...mapActions([USER_SIGNIN]),
查看完整描述

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('獲取信息失敗')

      })

}


查看完整回答
反對 回復 2018-09-09
  • 2 回答
  • 0 關注
  • 2495 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號