【发布时间】:2019-06-05 07:10:15
【问题描述】:
在不实际修改 store 状态的情况下,使用 Vuex store 操作来执行相关的异步操作(例如,GET 请求)是一种好习惯吗?
我有一个 Vuex 商店。我们称它为主机。
它包含一个对象作为它的状态,有一些 getter 来检索各种形式的状态,以及一些突变来修改所述状态。
但是,当涉及到操作时,我对作为参数传递给操作的主机对象执行某些异步请求。例如,可以启用或禁用主机。
因此,我有一个操作hostEnable(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 存储是否可以,还是所有操作都必须使用或修改存储状态?
【问题讨论】:
-
“调用 Axios GET 请求” - 我假设您的意思是“PUT”
-
@halfpad 在这种情况下它是一个 GET 请求 - 事后看来它应该是一个 PUT 请求。
标签: javascript vue.js vuex