action中的解构赋值疑惑

当时看到了这样一个问题

1
2
3
4
5
actions: {
increment ({ commit }) {
commit('INCREMENT')
}
}

看到action中increment函数的参数写成这样,当场就疑惑了,这个结构赋值的对象是谁呢
查找资料后发现

在vuex的api中action的部分有这样一句话“处理函数总是接受 context 作为第一个参数,payload 作为第二个参数(可选)”。

actions参数解构

action中的函数会默认自动获取context这个对象为第一个参数。
context这个对象拥有和store相同的属性和方法,但它不等同于store。从图中可以看到。
increment ({ commit }) { … }中的参数对象{…}就是指的context对象,而{ commit }就是指的context对象中的commit方法.

没有简化的写法是:

1
2
3
4
5
actions: {
increment (context) {
context.commit('INCREMENT')
}
}
1
2
3
4
5
actions:{
increment ( {commit} = context ){
commit('increment')
}
}

action中的解构赋值疑惑
https://jessnzz.github.io/2021/12/14/action中的解构赋值疑惑/
作者
Jessn
发布于
2021年12月14日
许可协议