最近在项目中遇到一个问题,提交了actions改变了state中cart对象的一个属性值,getter中依赖cart对象的值没有变化,在mutationl里面的操作如下:
state.cart[params].buy_num++
百度到vuex由于js的限制,不能检测到对象或者数组的属性变化。所以,解决办法就是拷贝出一个新的对象整个赋值到原来的对象中去,当整个对象改变才能检测到。例如下面:
state.cart[params].buy_num++
let cart = {}
for(var item in state.cart){
cart[item] = state.cart[item]
}
state.cart = cart
这样子处理后,我的getters里那个依赖state.cart的值就发生改变了。
啦啦啦啦,又踩过了一个小坑。。。