【发布时间】:2020-07-06 22:33:01
【问题描述】:
我想实现一个登录方法。我的代码是:
login() {
let user = {
email: this.email,
password: this.password
};
this.$store.dispatch('auth/login', user)
console.log(this.$store.getters['auth/getAuthError'])
},
我到达商店并发送登录操作的地方。
商店里的动作是这样的:
login(vuexContext, user) {
return axios.post('http://localhost:8000/api/user/login', user)
.then(res => {
vuexContext.commit('setToken', res.data.token)
vuexContext.commit('setUser', res.data, {root: true})
localStorage.setItem('token', res.data.token)
Cookie.set('token', res.data.token )
this.$router.push('/')
}).catch(err => {
vuexContext.commit('setAuthError', err.response.data)
})
},
在 catch 块中,如果发生错误,我会更新状态并将authError 属性设置为我得到的错误。
我的问题是,在登录方法中,console.log 语句在操作实际完成之前执行,因此authError 属性是尚未设置的状态。
如何解决这个问题?
【问题讨论】: