У меня есть компонент Vue, который вызывает действие Vuex в своем хуке create
(api.get
, который выбирает некоторые данные, а затем отправляет мутацию). После того, как эта мутация завершена, мне нужно вызвать действие в другом магазине, в зависимости от того, что было установлено в состоянии моего магазина ... в этом случае getUserSpecials
.
Я пытался использовать .then()
в моем действии, но эта мутация еще не завершена, хотя Обещание api.get
разрешено, поэтому состояние хранилища, которое мне нужно было проверить, еще не было доступно.
Кто-нибудь знает, существует ли ' лучшая практика »для этого? Я также подумал об использовании наблюдателя в состоянии магазина.
В моем компоненте у меня есть:
created () {
this.getUserModules();
if (this.userModules.promos.find((p) => p.type === 'specials')) {
this.getUserSpecials();
}
},
methods: {
...mapActions('userProfile', ['getUserModules',],),
...mapActions('userPromos', ['getUserSpecials',],),
},
В моем магазине у меня есть:
const actions = {
getUserModules ({ commit, dispatch, }) {
api.get(/user/modules).then((response) => {
commit('setUserModules', response);
});
},
};
export const mutations = {
setUserModules (state, response) {
Object.assign(state, response);
},
};
Прямо сейчас простая проверка if
в моем create
хуке работает нормально, но мне интересно, есть ли более элегантный способ сделать это.