Во-первых, dispatch возвращает промис, притом если экшен возвращает промис, то dispatch вернет именно его
То есть можем сделать примерно следующее:
// экшн:
InitChatSystem() {
return axios.get('/api/initChat')
.then(res => {
this.commit('chat/initArticles', res.data.articles);
this.commit('chat/initNotifications', res.data.notifications);
})
.catch(err => {
console.log(err);
})
},
// хук:
created() {
this.$store.dispatch('chat/InitChatSystem').then(() => {
// тут запускаем нашу мутацию
// но как я понял, она в дочернем компоненте
// нужно навесить ref на компонент, а в самом компоненте сделать метод запуска
// а здесь будет что-то типа:
this.$refs.child.run();
});
},
Второй вариант, чисто на возможностях Vuex:
// дождемся, когда в state.articles появятся данные
activated() {
const unwatch = this.$store.watch(state => state.articles.length, length => {
if(length === 0) { return; }
unwatch();
this.$store.commit('chat/openConversationArticle', this.article_id);
});
},