老师请问

老师请问

http://img1.sycdn.imooc.com//climg/60c075e70905547412990864.jpg


老师 为啥这里要有替换操作。 上面的操作不就是直接修改了state里面的数据吗?  不是很理解这个替换操作,而且这里引用类型赋值,不还原有的堆内存吗?

正在回答 回答被采纳积分+1

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

2回答
好帮手慕慕子 2021-06-09 18:11:43

同学你好,对于你的问题解答如下:

1、如果cartList一开始有值的话,那么就不需要最后再添加state.cartList[shopId] = shopInfo这句代码。直接修改shopInfo的值,state中数据也会随之改变。

2、正常情况下,将state中引用类型的数据赋值给一个变量后,修改这个变量的值,state中的数据也会随之改变。

2、“实际上是可以使用state里面的值。替换掉state的值的”不太理解同学这句话想表达什么,与老师前面两条表达的是一个意思吗?如果不是的话,可以详细描述下,便于帮助同学准确的定位与解决问题。

祝学习愉快~



  • 提问者 帅得无心敲代码 #1
    我的意思是如果对象中有值,也是会执行最后两句赋值的操作,这就是相当于使用states里面的值赋值给states里面的值了吗
    2021-06-09 18:50:07
  • 同学你好,是的,理解是对的,祝学习愉快~

    2021-06-09 18:58:30
好帮手慕慕子 2021-06-09 17:38:04

同学你好,因为一开始state的cartList里面是没有数据的,会执行后面的if语句,将shopInfo重新赋值为一个空对象,此时,shopInfo与state.cartList[shopId]之间没有任何引用关系了,所以后面修改shopInfo时,state里面的数据不会随之改变。所以需要最后通过state重新cartList的值才可以。如下:

http://img1.sycdn.imooc.com//climg/60c08bd10969cb5a07600649.jpg

祝学习愉快~


  • 提问者 帅得无心敲代码 #1

    老师 也就是说。 如果cartList有值的话, count加减, 还得会直接更换整个引用?而不是直接修改count值。

    也就是说。 实际上是可以使用state里面的值。替换掉state的值的?是这样理解吗?

    2021-06-09 17:58:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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