【发布时间】:2017-03-22 02:55:06
【问题描述】:
我有一个vuex 商店,如下所示:
import spreeApi from '../../gateways/spree-api'
// initial state
const state = {
products: [],
categories: []
}
// mutations
const mutations = {
SET_PRODUCTS: (state, response) => {
state.products = response.data.products
commit('SET_CATEGORIES')
},
SET_CATEGORIES: (state) => {
state.categories = state.products.map(function(product) { return product.category})
}
}
const actions = {
FETCH_PRODUCTS: (state, filters) => {
return spreeApi.get('products').then(response => state.commit('SET_PRODUCTS', response))
}
}
export default {
state,
mutations,
actions
}
我想从突变:SET_PRODUCTS 中调用突变:SET_CATEGORIES,但这给了我错误:
projectFilter.js:22 Uncaught (in promise) ReferenceError: commit is not defined(...)
什么应该是正确的方法来做到这一点。我尝试了store.commit 和this.commit,但这些也给出了类似的错误。
【问题讨论】:
-
相关(已关闭)问题:github.com/vuejs/vuex/issues/907
-
嗨@Saurabh,我已经测试了Kubiwama Adrien 的答案,它似乎有你需要的东西,也许可以测试一下并用最新的答案更新这个论坛?谢谢!
-
为什么不使用一个动作并在其中调用多个突变?
标签: javascript vue.js vuex