问题:购物车页中点击商品数量增加按钮数据不能实时更新
1.购物车页
addCartGoods(state, obj) {
let idx = state.cartGoods.findIndex(item => item.id == obj.id);
if (idx >= 0) {
// 在数组中已经存在某个商品
state.cartGoods[idx].num++;
} else {
//原本的代码
state.cartGoods.push(obj)
// 正确的代码
state.cartGoods.push(JSON.parse(JSON.stringify(obj)));
}
}
疑问:用浅拷贝不行吗,就让他引用同一内存地址的数据,数量就变化了。
解答:不行,因为你铺设页面用的数据是
computed: {
...mapGetters("shop", ["getCartGoods"])
}
然后那些引用地址中的数据来自goodsArr,你浅拷贝改变的是goodsArr中的数据,购物车页面中的数据是cartGoods,不会实时改变。