I have a vuex store, like following:
import spreeApi from \'../../gateways/spree-api\'
// initial state
const state = {
products: [],
categories: []
}
// mu
When you are already doing a mutation, there is no way to commit
another mutation. A mutation is a synchronous call which changes the state. Within one mutation, you will not be able to commit another mutation.
Here is the API reference for Vuex: https://vuex.vuejs.org/en/api.html
As you can see, a mutation handler receives only state
and payload
, nothing more. Therefore you are getting commit
as undefined
.
In your case above, you can set the PRODUCT and CATEGORIES as part of the same mutation handler as a single commit. You can try if the following code works:
// mutations
const mutations = {
SET_PRODUCTS_AND_CATEGORIES: (state, response) => {
state.products = response.data.products
state.categories = state.products.map(function(product) { return product.category})
},
// ...
}
EDIT: Please refer to the answer below, provided by Daniel S. Deboer. The correct method is to commit two mutations from a single action, as described in his answer.