VUE 的updated钩子函数被死循环一样无限调用

今天发现了一个很奇怪的问题,就是发现updated钩子函数被死循环一样无限调用

代码如下

 大家想一下上面的代码有没有什么问题呢?

这样的代码会导致updated钩子函数被无限调用,但是为什么呢???

答案其实也不难,就是因为我们修改了被VUE管理的属性,也就是logisticsList,而且这个数据刚好是应用类型的,如何是其他普通类型如数字、字符串等则不会出现这种情况。

因为普通类型在进行赋值时VUE会判断内容是否改变,如果没有改变的话,updated钩子就不会被触发,所以也就不会死循环

而引用数据类型在赋值时是比较地址,在一个进程中每个对象的地址都是不一样的,所以必然会触发updated钩子,而updated钩子里面又对进行引用类型数据的赋值,这样就会引起死循环

我们最后解决方法是改用watch来解决的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值