【发布时间】:2020-08-17 01:45:31
【问题描述】:
需要帮助,因为我无法理解某些内容...
我有:
// AuthService.js
login(user) {
return Api.post('/login', user);
},
// store/user.js
async login(context, user) {
try {
let response = await AuthService.login(user);
context.commit('SET_TOKEN', response.data.api_token);
response = await AuthService.me();
context.commit('SET_USER', response.data.user)
}catch (e) {
console.log(e);
}
},
// Login.vue
async onSubmit() {
await this.$store.dispatch('user/login', this.user);
this.$router.push({name: 'Home'});
}
我知道 axios 返回了一个承诺,因此我可以异步/等待 store/user 中的响应。但我真的被困在试图将错误发送到登录组件以停止 router.push 和重定向。
解决方案:
// AuthService.js
login(user) {
return Api.post('/login', user);
},
// store/user.js
async login(context, user) {
let response = await AuthService.login(user);
context.commit('SET_TOKEN', response.data.api_token);
response = await AuthService.me();
context.commit('SET_USER', response.data.user)
},
// Login.vue
async onSubmit() {
try {
await this.$store.dispatch('user/login', this.user);
this.$router.push({name: 'Home'});
} catch (e) {
console.log(e);
}
}
【问题讨论】:
-
将
try catch放入store/user.js 中,您应该将其放入Login.vue -
太简单了,谢谢。
-
一般来说,你不应该使用
try catch,除非你真的想自己处理错误。输入console.log(e)毫无意义,会导致您遇到的问题。 -
是的,console.log(e) 只是为了发帖。在我的项目中,我将错误发送到通知组件以显示。
标签: javascript vue.js axios try-catch es6-promise