mutations按正常逻辑赋值后,为何在页面渲染不加对象是否为空检测,直接获取对象属性获取不到,赋值传值跟渲染的执行顺序不同引起的吗?具体是怎么样的执行顺序?

mutations按正常逻辑赋值后,为何在页面渲染不加对象是否为空检测,直接获取对象属性获取不到,赋值传值跟渲染的执行顺序不同引起的吗?具体是怎么样的执行顺序?

http://img1.sycdn.imooc.com//climg/606951c809524efc09150557.jpg

http://img1.sycdn.imooc.com//climg/606951f609ea194507030359.jpg

​老师,按我的理解点击添加按钮的时候,cartList的对象中应该是能读到count属性了,为何不加问好检测对象是否存在,为报错?渲染的时候还没有拿到最新数据?赋值后传值回来跟渲染Dom是怎么样一个执行顺序呢?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,如下内容是循环生成的,点击第一项的+号,可以获取到第一项的count,但是第二、三、四项得不到count,所以会报错。

http://img1.sycdn.imooc.com//climg/606ad43e090f852f03000387.jpg

建议:按照老师的写法书写。祝学习愉快~

好帮手慕言 2021-04-05 10:49:49

​同学你好,初始时,cartList是空的,所以在使用时需要做一个检测,实际工作中,这种写法也是很常见的,在用数据时,先做检测,避免出现不可控的问题,祝学习愉快~

  • 提问者 好帮手慕斯林 #1

    嗯呢,{{ cartList?.[shopId]?.[item._id].count || 0 }}如未加'?'  ,初始加载的时候并没有报错呢,说明程序没问题?是点击的时候才报错的,当我点击的时候已经向cartList传数据了,不明白的是有数据过去了还报错?是不明白里面的先后执行机制而已

    2021-04-05 11:09:07
好帮手慕斯林 提问者 2021-04-05 09:59:32

老师在不?

慕哥0292637 2021-04-04 18:20:47

shopinfo product 用来作为中转站  点击添加后    在cartList对象中    先由外层到内层向外传值传给中转站  如果没有            那么就依次(由外层到内层) 创建空对象中转站       然后把点击传过来的数据传给中转站  然后让count+1后传给cartList对象                          如果有了该shopId 和该product  就直接拿到中转站让count加一后 传给carList 对象       购物车里面的数据   包括 商店详情里面的数量 都是基于carList 对象响应式数据    只要 caoList对象里面数据改变     这些数据都会发生改变         

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师