请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于商品列表的代码优化问题

老师,购物车商品数量您对代码做了优化,将
{{cartList?.[shopId]?.[item._id]?.count || 0}} 商品数量,优化为
{{item.count || 0}}
我对这个优化有点不理解,就是:这个item,来自于list列表,list列表的是api接口里取出的数据。原本api取出的数据,商品信息是没有count属性的。这里为何item中能有count?
count属性是在购物车的cartlist列表中的商品中添加的。
而下方购物车上显示的购物车商品信息,是来自于购物车的cartlist的,在添加修改购物车时,是给购物车里的商品添加了count属性的。购物车的商品列表是可以如此优化的。但上方的店铺商品列表中的item并不来自于cartlist,所以这里能够这样取值和优化,我不理解。
见如下原项目代码:

<div class="product__number">
  <span
    class="product__number__minus"
    @click="() => { changeCartItemInfo(shopId, item._id, item, -1) }"
  >-</span>
    // 下方代码优化为 {{item.count || 0}},对此不理解
    {{cartList?.[shopId]?.[item._id]?.count || 0}}
  <span
    class="product__number__plus"
    @click="() => { changeCartItemInfo(shopId, item._id, item, 1) }"
  >+</span>
</div>

正在回答

1回答

关键在于 || 0,这个操作,如果没有count,我会默认让它是 0 啊

0 回复 有任何疑惑可以回复我~
  • 提问者 慕容6332229 #1
    老师,您没明白我疑问的地方。|| 0,这个我知道,如果没有值,默认0。我的疑问是,即使有值,item是list里的item,而这个list是axios访问获取的商品列表,不是购物车里的。所以list的item中,即商品中,根本没有count属性呀。即使count有了值,也与list的item无关呀,我理解是item中并没有该属性并赋值呀,但为何其会有count属性值呢???
    
    count属性值只是赋值给了cartlist——购物车列表中的商品呀!
    也就是说,我的就理解是:cartlist——购物车商品列表中的商品有count的属性,我理解。因为cartlist在被修改、更新、添加购物车时给添加并赋值了。
    
    但list——axios 获取的商品列表,这里的商品并没有count属性呀。也没有在什么时候给添加并赋值过呀,为何却可以通过item.count来渲染页面呢?!
    回复 有任何疑惑可以回复我~ 2021-05-01 22:32:58
  • Dell 回复 提问者 慕容6332229 #2
    开始的时候,确实没有count,是undefined,所以会用0,后面我往里加了count对应的值
    回复 有任何疑惑可以回复我~ 2021-05-04 21:30:29
  • 提问者 慕容6332229 #3
    谢谢老师,你可能还是没明白我的问题的地方。这个问题看你其它章节的讲解我也明白了!其实就是变量传递的是对象时,传递的就是引用。那么既然是引用,则一处改变,处处改变。一处给赋了值,则处处都有值!
    回复 有任何疑惑可以回复我~ 2021-05-10 12:41:37
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信