Улучшенный пример выше, чтобы избежать избыточного переноса обещаний и использовать async / await для упрощенного кода:
имаю, vuex действия возвращают обещания, но я не нашелидеальный шаблон для обработки ошибок в vuex. Мой текущий подход - использовать перехватчик ошибок в моем плагине axios, а затем фиксировать ошибку в моем хранилище vuex.
в плагины / axios.js:
export default function({ $axios, store }) {
$axios.onError(error => {
store.dispatch('setError', error.response.data.code);
});
}
в магазин / index.js:
export const state = () => ({
error: null,
});
export const mutations = {
SET_ERROR(state, payload) {
state.error = payload;
},
}
export const actions = {
setError({ commit }, payload) {
commit('SET_ERROR', payload);
},
};
Я бы тогда использовалошибка компонента смотреть состояние ошибки и показать, есть ли ошибка. Таким образом, действительнонет необходимости ловить ошибки либо в моем действии, либо в компоненте, который отправил действие. Однако я не могу не волноваться, если этоплохой дизайн, оставляя исключения непокрытыми? С какими проблемами я мог бы столкнуться, если бы я обработал ошибки этим дизайном? Предложения о лучших способах сделать это?