vue 赋值不改变_我才知道的vue真相

自从5月19号来北京工作后,一直忙于工作和学习之间,一直没有写一些总结,看来还是要把这个习惯坚持下来。

今天遇到的问题是我之前做了一个简单商城项目,因为用了vue,业务逻辑也比较简单,没有什么好总结的,现在这个项目要迭代二期,就遇到问题了。在之前的商场,只有一个主页(即商品页),我就把购物写在主页当中,交上去了。也一直运行了两个多月,之后没有什么改动,但在第二期的时候,添加了商品介绍页,而这个页也有购物车,为了能复用,我单独把这个购物车抽成了一个组件。

抽出来之后。我就遇到了技术实现业务上的逻辑问题,在主页,能添加任意一款商品到购物车的列表里,到商品介绍页,也能把当前的商品添加进去。这就需要一个公共的数据,

之前是把列表做成一个由数组组成的对象,然后传给子组件购物车,然后在购物车中做列表的删除工作(也就是我不想这个商品了。直接删除),不知道这个是有意还是自己无意写的,在一次删除过程中,无意也发现了父组件的列表数据也跟着变了,虽然不懂原理,但是也解决我目前的困境,就把商品介绍页做成一个组件放到主页中(虽然可能有设计上的不合理,但是先完成工作再考虑)。在点击商品时,主页隐藏,介绍页显示,声明一个变量赋值当前的商品,在介绍页点击添加到购物车时,把当前的变量push到购物车列表中。这样暂时满足我的需求。(哎,小高兴了一把)

回到家后,我就对今天遇到的问题产生了疑问,为什么我在子组件中改变数据,父组件的数据也改变了。vue中不是说有单向数据流的概念,子组件是不允许直接改变父组件的数据,而我实现了一个,居然没有报错,不知道为什么

回到家中,问了一下我老弟,老弟直接说了一句话,传值就是赋值,而是一个对象,对象的赋值其实是引用,你改变了引用对象,当然都会变。

猛地一说,把我说醒了,举个例,把一个对象赋值给A。然后A赋值给B,把B这个对象改变时,那么A这个对象也变得和B一样。我改变的是这个引用的对象,而不是只是改变了B。

用vue的话来说,我改变子组件的值,而这个值是父组件里面的值赋值过来的,是一个对象,那么子组件的值就是这个的引用对象,我改变了这个值,也就变相的改变了父组件的值。

那么开脑洞了,如果我不想让子组件这样随意的改变父组件的值,那怎么做那,一个概念就出来,就是对象的深拷贝。

哈哈,这个对我来说是一个新的概念,我要去搜搜资料来写一篇文章总结下。明天来写一下,可能写的不好,请不要见笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值