今天发现了一个很奇怪的问题,就是发现updated钩子函数被死循环一样无限调用
代码如下
大家想一下上面的代码有没有什么问题呢?
这样的代码会导致updated钩子函数被无限调用,但是为什么呢???
答案其实也不难,就是因为我们修改了被VUE管理的属性,也就是logisticsList,而且这个数据刚好是应用类型的,如何是其他普通类型如数字、字符串等则不会出现这种情况。
因为普通类型在进行赋值时VUE会判断内容是否改变,如果没有改变的话,updated钩子就不会被触发,所以也就不会死循环
而引用数据类型在赋值时是比较地址,在一个进程中每个对象的地址都是不一样的,所以必然会触发updated钩子,而updated钩子里面又对进行引用类型数据的赋值,这样就会引起死循环
我们最后解决方法是改用watch来解决的