@alzow

Как показывать уведомления из Vuex?

Разрабатываю небольшое приложение на VueJS в образовательных целях и столкнулся с вопросом, как показывать уведомления пользователю (всплывающие сообщения всякие) при ответе API с сервера.

Код для ясности:

export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions: {
        load_current_user (context, {}) {
            Vue.http.get(`/api/users/me/`).then(response => {
                context.commit('set_current_user', response.body);
            }, response => {
                // Что-то пошло не так. Надо уведомить пользователя об этом. 
           });
    },
    }
})


Что-то мне подсказывает, что показывать уведомления из store - плохая идея, и надо бы возвращать promise, но тогда придется и первый и второй случай обрабатывать из места, откуда action был вызван, что все усложнит.
  • Вопрос задан
  • 544 просмотра
Пригласить эксперта
Ответы на вопрос 1
alvvi
@alvvi
export default apathy;
Так вы какие уведомления хотите? На уровне приложения или на уровне одного компонента? Если на уровне приложения, то естественно логика должна быть завязана на store. Если на уровне компонента, возвращайте промис.
Не знаю как vue-resources, с обычными промисами никаких проблем не возникает.

export default new Vuex.Store({
    actions: {
        load_current_user (context, {}) {
           // Помните что .then возвращает именно промис
           return axios.get('/api/users/me/')
             .then(response => {
                context.commit('set_current_user', response.body)
             })
      },
    }
})


// В компоненте
this.$store.dispatch('load_current_user', {}).catch(e => {
  // Что-то пошло не так. Надо уведомить пользователя об этом.
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы