все!
Мне нужно получить axios Отклонить обещание в моем компоненте vue с помощью vuex.
У меня есть файл serviceApi.js:
export default {
postAddService(service) {
return axios.post('api/services', service);
}
}
мои действия в vuex:
actions: {
addService(state, service) {
state.commit('setServiceLoadStatus', 1);
ServicesAPI.postAddService(service)
.then( ({data}) => {
state.commit('setServiceLoadStatus', 2);
})
.catch(({response}) => {
state.commit('setServiceLoadStatus', 2);
console.log(response.data.message);
return Promise.reject(response); // <= can't catch this one
});
}
}
и в моем компоненте vue:
methods: {
addService() {
this.$store.dispatch('addService', this.service)
.then(() => {
this.forceLeave = true;
this.$router.push({name: 'services'});
this.$store.dispatch('snackbar/fire', {
text: 'New Service has been added',
color: 'success'
}).then()
})
.catch((err) => { // <== This never hapens
this.$store.dispatch('snackbar/fire', {
text: err.response.data.message || err.response.data.error,
color: 'error'
}).then();
});
}
Когда я использую axios непосредственно в моем компоненте, все работает хорошо. Я получаю сообщения об успехах и ошибках.
Но когда я работаю с использованием vuex, я не могу получить сообщение об ошибке в компоненте, однако в vuex action console.log выводит то, что мне нужно.
Я всегда получаю только успешные сообщения, даже когда плохие вещи случаются на заднем плане.
Как я могу справиться с этой ситуацией, используя vuex?