Является ли хорошей практикой использование действий хранилища Vuex для выполнения связанных асинхронных операций (например, запросов GET) без фактического изменения состояния хранилища?
У меня есть магазин Vuex. Давайте назовем это Host.
Он содержит объект в качестве своего состояния, с некоторыми получателями для извлечения различных форм состояния, а также с некоторыми мутациями для изменения указанного состояния.
Однако, когда дело доходит до действий, я выполняю определенные асинхронные запросы к хост-объектам, которые я передаю действиям в качестве параметра. Например, хост может быть включен или отключен.
Поэтому у меня есть действие enableHost(host)
, которое вызывает запрос Axios GET, который отвечает только OK (200).
const getDefaultState = () => {
return {
host: {...}
}
};
export const state = getDefaultState();
const getters = {
getHost: (state) => {
return state.host;
},
...
};
const mutations = {
setHost: (state, host) => {
state.host = host;
},
...
};
const actions = {
fetchHost ({commit}, hostId) => {
api.get(hostId)
.then(({data}) => {
commit(setHost, data);
})
.catch(error => {
throw new Error(error);
});
},
createHost: ({state}) => {
return api.create(state.host);
},
hostEnable: (context, host) => {
return api.enableHost(host);
},
...
};
export default {
state,
getters,
actions,
mutations
};
Можно ли использовать хранилище Vuex таким образом, или все действия должны использовать или изменять состояние хранилища?