vuex里action方法参数问题

clipboard.png
vuex官网给的这个action方法里,第一个参数{commit,state}这个是哪里来的呢?调用的时候只需要传第二个参数products就行checkout(products)

回答:

看官网,楼上 芦荟 正解,我补充一下action的api,你就知道了
action api

vuex api

回答:

以下摘自原文文档:
“Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。
实践中,我们会经常用到 ES2015 的 参数解构 来简化代码(特别是我们需要调用 commit 很多次的时候):

actions: {
increment ({ commit }) {

commit('increment')

}
}”
同理,参数{commit,state} 是参数解构来的

回答:

参数结构嘛,其实第一个参数是传进去一个store

回答:

我也被卡住了。不知道结构赋值怎么解构来的,看到楼上豁然开朗,原来是解构的context 因为context这个对象和store相同的解构,里边肯定就有{stare,commit,getters,actions,mutations}方法和属性,所以functionxx({commit,state})={} 等于把context分解啦,分解后原来需要调用context.commit的现在不需要了,因为commit 就是结构后的方法,直接commit(xx)就好了。thanks god 我终于懂了。至于后边的types就是import * as types from xx 然后可以用types.xx
然后就是还需要注意的一点是,action是commit到mutation,mutation提交到state,为什么写那么多ES6语法呢。。。

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注