Vuex: Call getters from action
In addition to commit, actions has default injected parameters which are dispatch
, getters
and rootGetters
. So you can simply write;
sendDataToServer({ commit, getters }, payload)
to access getters.
You have access to getters
inside an action:
getters: {
getUser(state){
return state.user
}
}
actions : {
myAction({ getters }){
let user = getters.getUser
}
}
In the action, you see the first parameter has {commit}
in it. Similarly, you can pass {commit, state}
. This way, you can directly access the state.data.
I think in your example, you would want to do the action because you can call the mutation from inside action itself using commit('setData')
.
The first parameter is there for you to use state and mutation as you prefer. Personally, I have only worked on projects where you do the action first and do mutation to store it in the app. For example, if I want to store a car info in the server somewhere, first I would do the action (and save it to remote db). Once I confirm that it saved in db, I would locally mutate in the store. This totally depends on case by case basis. But good thing is that you can mutate from inside the action