Да я только разбираюсь во всем этом, но vuex юзаю. Но только для тех событий, которые влияют на приложение.
Вот action удаления статьи (пишу простенький блог).
async removeArticle({ commit }, id) {
commit(REMOVE_ARTICLE_REQUEST);
try {
await axios.delete(`/api/articles/${id}`);
commit(REMOVE_ARTICLE_SUCCESS, id);
} catch (e) {
commit(REMOVE_ARTICLE_FAILURE, e.response.data.message);
}
}
Но, при нажатии на кнопку выводиться кастомный confirm (их может быть несколько), мне кажется, что данный confirm не должен влиять на приложение. Ну, а смысл "приложению" знать о том, что запущен какой-то диалог, поэтому это состояние локальное.
Я смотрю в сторону событий, но, какой-то слишком запутанный получается "банальный диалог", цель которого запустить callback и скрыть себя.
export default {
props: {
onConfirm: Function,
onCancel: Function,
},
data: () => ({ active: false }),
methods: {
open() {
this.active = true;
},
close() {
this.active = false;
},
confirmHandler() {
this.close();
if (this.onConfirm) {
this.onConfirm();
}
},
cancelHandler() {
this.close();
if (this.onCancel) {
this.onCancel();
}
},
},
};
Надеюсь после просмотра этого кода, никому плохо не станет