在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vuex的mutations中用axios請(qǐng)求數(shù)據(jù),根據(jù)返回的值來判斷跳到不同的

vuex的mutations中用axios請(qǐng)求數(shù)據(jù),根據(jù)返回的值來判斷跳到不同的頁面,報(bào)錯(cuò)

問題描述

vuex的mutations中用axios請(qǐng)求數(shù)據(jù),根據(jù)返回的值來判斷跳到不同的頁面,報(bào)錯(cuò)

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

這個(gè)需求是這樣的 有一個(gè)接口在多個(gè)頁面需要用,而且還有好多判斷,我就想放到vuex里面進(jìn)行多次調(diào)用 ,可是在mutations里面跳轉(zhuǎn)報(bào)錯(cuò)

我嘗試用
this.$store.dispatch('getCertificationStatus',this.$router)
把this.$router傳過去,但是還是不可以

改后
調(diào)用
methods:{

state : function(){
    this.$store.dispatch('getCertificationStatus',this)
}

store.js

getCertificationStatus(state,vm){
    return new Promise((resolve, reject) => {
        axios.post('/realNameUtils/gotoStatusPage')
      .then((res)=>{
        if(res.data.content == "NOT_REALNAME"){
            vm.$router.push({path:'/user/info'})//點(diǎn)擊跳到未認(rèn)證頁面
          }

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

getCertificationStatus(state){
    return new Promise((resolve, reject) => {
        axios.post('/realNameUtils/gotoStatusPage')
      .then((res)=>{
        if(res.data.content == "NOT_REALNAME"){
            this.$router.push({path:'/user/info'})//點(diǎn)擊跳到未認(rèn)證頁面
          }
          if(res.data.content == "NATURAL_SUBMIT"){
            this.$router.push({path:'/user/review'})//點(diǎn)擊跳到個(gè)人審核頁面
          }
          if(res.data.content == "NATURAL_BASEINFO_FAILED"){
            this.$router.push({path:'/user/fail'})//基本信息未通過,點(diǎn)擊跳到審核失敗頁面
          }
          if(res.data.content == "NATURAL_BASEINFO_SUCCESS"){
            this.$router.push({path:'/user/waitFor'})//審核通過等待打款,點(diǎn)擊跳到平臺(tái)轉(zhuǎn)款頁面
          }
          if(res.data.content == "NATURAL_PAY_FAILED"){
            this.$router.push({path:'/user/cardreFill'})//打款fail用戶重填銀行卡界面
          }
          if(res.data.content == "NATURAL_PAY_SUCCESS"){
            this.$router.push({path:'/user/firmMoney'})//打款OK填寫核驗(yàn)金額3次機(jī)會(huì)
          }
          if(res.data.content == "NATURAL_BANK_SUCCESS"){
            this.$router.push({path:'/user/success'})//點(diǎn)擊跳到平臺(tái)轉(zhuǎn)款金額考核成功頁面
          }
          if(res.data.content == "NATURAL_BANK_FAILED"){
            this.$router.push({path:'/user/cardFail'})//點(diǎn)擊跳到平臺(tái)轉(zhuǎn)款金額考核失敗頁面
          }
    }
  })
}

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

圖片描述

回答
編輯回答
祈歡

我試了 確實(shí)可以了 只是因?yàn)閍xios是異步所以放在actions里面嗎

2017年3月11日 14:23
編輯回答
維她命

老鐵,你需要把你的那個(gè)vue對(duì)象傳入mutation,不然你mutation中的this指向的不是vue對(duì)象。

getCertificationStatus(state, vm){
    return new Promise((resolve, reject) => {
        axios.post('http://XXXXX/realNameUtils/gotoStatusPage')
      .then((res)=>{
        if(res.data.content == "NOT_REALNAME"){
            vm.$router.push({path:'/user/info'})//點(diǎn)擊跳到未認(rèn)證頁面
          }
    }
  })
}

你調(diào)用的時(shí)候注意要傳入這個(gè)vm,getCertificationStatus(this)注意你這個(gè)調(diào)用的話,一定要在vue里面調(diào)用哦,不然這個(gè)this任然指向的不是你的vue實(shí)例。


更新
你注意不要傳this.$router啊,你傳vue實(shí)例this就夠了。

--
你試一下把這個(gè)寫成actions,其實(shí)按理來說,異步請(qǐng)求ajax應(yīng)該寫成actions的,不應(yīng)該寫在mutation里面,mutation只負(fù)責(zé)一些同步的操作。你actions請(qǐng)求到數(shù)據(jù)之后,再去分發(fā)mutations,試一下這樣。

2017年12月7日 17:52