请说明Vue Watch和Dep的关系 ?

Vue中的Watch和Dep(全称:Dependency,在Vue内部实现中通常与Watcher和Dep类相关)之间的关系主要体现在Vue如何响应式地追踪和更新数据上。以下是关于它们关系的详细解释:

  1. 基本概念

    • Watch:Vue中的一个选项或方法,用于观察和响应Vue实例上的数据变动。当指定的数据发生变化时,可以触发相应的处理函数。
    • Dep(依赖收集):在Vue内部,Dep是一个可以收集依赖的类。当数据被访问时,Vue会调用该数据的getter函数,并将当前的Watcher(观察者)添加到Dep的subs数组中,这个过程称为“依赖收集”。
  2. 内部实现

    • 当我们在Vue组件中使用watch选项或在计算属性computed中使用依赖数据时,Vue会为每一个watch或computed创建一个Watcher实例。这个Watcher就是观察者,它会“观察”它所依赖的数据。
    • Dep内部维护了一个subs数组,用来存放所有依赖这个数据的Watcher。当数据发生变化时,Vue会调用该数据的setter函数,并遍历subs数组,通知每一个Watcher数据已经更新,这个过程称为“派发更新”。
  3. 关系总结

    • watch通过Dep来监听数据变化:当我们使用watch来观察某个数据时,Vue实际上是通过Dep来收集对该数据的依赖(即Watcher)。
    • Dep通知watch进行数据更新:当被watch的数据发生变化时,Dep会遍历其subs数组中的Watcher,并调用它们的update方法,从而通知它们数据已经更新。

综上所述,Vue中的Watch和Dep共同构成了Vue的响应式系统,使得当数据发生变化时,能够自动地触发相应的更新和处理函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值