老师,更新state里面的数据,我试了三种方法都可以

来源:11-8 根据购物车选中状态计算订单金额(2)

目訫

2021-03-20

第一种:

changeCartItemChecked (state, params) {
  const { shopId, productId } = params
  const product = state.cartList[shopId][productId]
  product.check = !product.check
  state.cartList[shopId][productId] = product
}

第二种:

changeCartItemChecked (state, params) {
  const { shopId, productId } = params
  const product = state.cartList[shopId][productId]
  product.check = !product.check
}

第三种:

changeCartItemChecked (state, params) {
  const { shopId, productId } = params
  state.cartList[shopId][productId].check = !state.cartList[shopId][productId].check
}

老师,这种设计就让人很苦恼,究竟哪一种才是正确的?

而上一个方法又不是这样的

changeItemInfo (state, payload) {
  const { shopid, productId, productInfo, num } = payload
  let shopInfo = state.cartList[shopid]
  if (!shopInfo) shopInfo = {}
  let product = shopInfo[productId]
  if (!product) {
    product = productInfo
    product.count = 0
  }
  product.count = product.count + num
  if (num > 0) {
    product.check = true
  }
  if (product.count < 0) {
    product.count = 0
  }
  shopInfo[productId] = product
  state.cartList[shopid] = shopInfo
},

如果不写最后一句话state.cartList[shopid] = shopInfo,页面不会重新显示

究竟两者存在什么区别?

写回答

1回答

Dell

2021-03-21

如果你改一个基础类型,比如说布尔值,三种都行。但如果你改一个引用类型,一定要重新设置一下值

0
3
目訫
回复
Dell
多谢老师的解答
2021-03-23
共3条回复

Vue3入门与项目实战 掌握完整知识体系

明星讲师DELL亲授,全方位知识点+高匹配度项目,入门到深度掌握

3382 学习 · 1454 问题

查看课程