#vue.js
#vue.js
Вопрос:
У меня проблема, которую я не могу решить vue.js Я перехватываю запросы, которые возвращают ошибку (перехватчик axios), и когда она проходит через этот перехватчик, перехват запроса axios все равно учитывается.
За исключением того, что я жду ошибки «error.api». который я не получаю, поэтому он выдает ошибку консоли.
Вот код:
axios.interceptors.response.use(null, error => {
let path = '/login';
switch (error.response.status) {
case 401: path = '/login'; break;
case 404: path = '/404'; break;
}
store.commit('logout')
router.push(path);
return Promise.reject(error);
});
эта ошибка
2.js:376 Uncaught (in promise) TypeError: Cannot read property 'api' of undefined
И, наконец, запрос axios и ошибка генерируются последней строкой (err.api[0])
deleteApi(id) {
this.$store.dispatch('deleteApi', id)
.then((res) => {
this.$toast.success(res.data.success)
this.deleteApiModal(id)
})
.catch(err => this.$toast.error(err.api[0]))
},
Ответ №1:
Я, наконец, нашел решение, но очень грязное, которое я нахожу повторяющимся не так много.
При каждом вызове axios ставится условие, которое проверяет, существует ли «ошибка»…
Я бы предпочел иметь возможность взаимодействовать с перехватчиком, чтобы справиться с этим только в одном месте.
Если у кого-то есть лучшее решение, я приму его!
deleteApi(id) {
this.$store.dispatch('deleteApi', id)
.then((res) => {
this.$toast.success(res.data.success)
this.deleteApiModal(id)
})
.catch(err => { if(err) this.$toast.error(err.api[0]) })
},