天天看點

擷取this.$store.dispatch的傳回值Action調用

this.$store.dispatch() 是用來傳值給vuex的mutation改變state。

我們來看看怎麼擷取this.$store.dispatch() 調用的傳回值。

Action

首先看看定義的Action:

login({ commit }, userInfo) {
    // const { username, password } = userInfo
    return new Promise((resolve, reject) => {
      login(userInfo).then(response => {
        const { data } = response
        commit('SET_TOKEN', data.token)
        setToken(data.token)
        resolve(response)
      }).catch(error => {
        reject(error)
      })
    })
  },      

兩個關鍵點:

  • 傳回一個new Promise
return new Promise((resolve, reject)      
  • resolve函數中傳入傳回值
resolve(response)      

調用

this.$store.dispatch('user/login', this.loginForm)
              .then(res => {
                console.log(res)
                fullLoading.close();
                //登陸首頁還是之前通路需要重定向的位址
                this.$router.push({
                  path: this.redirect || '/'
                })
                this.loading = false

              })
              .catch(error => {}      

在調用裡就可以直接通過 res 來直接擷取傳回值了。

.then(res => {
                console.log(res)