• Vue在数据初始化的时候会对data,computed,watcher中的属性进行依赖收集,如果支持proxy,则直接使用proxy进行拦截,好处是可以深层次的进行拦截,如果不支持proxy,则使用object.defineProperty来进行数据拦截依赖收集。但是object.defineProperty无法做到深层次的监听,所以对属性进行递归算法去实现依赖收集,如果在初始化没有将属性收集进去,则很有可能没有收集到依赖,这种情况则需要使用$set, 在$set中重新进行依赖收集。    
  • 还有一种情况是直接操作数组的下标,也不会发生dom更新,其实vue对数组的push, pop,unshift, shift,splice,sort,reverse这几个方法进行了重新定义,如果使用这几个方法对数组进行操作,是可以监听到数据变化的。    
  • 还有一种,就是你的数据变更在dom挂载之前,比如,数组要放到一个容器里渲染,可是容器还没有挂载出来。导致找不到dom,这种情况就需要使用$nextTick。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-28
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
  • 2021-07-05
  • 2021-10-11
相关资源
相似解决方案