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)