千家信息网

Vue数据驱动里的Watcher是什么意思

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,Vue数据驱动里的Watcher是什么意思,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如果说Object.defineProperty
千家信息网最后更新 2025年01月28日Vue数据驱动里的Watcher是什么意思

Vue数据驱动里的Watcher是什么意思,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

  如果说Object.defineProperty是vue数据驱动的灵魂,那么Watcher则是他的骨骼。

简述Watcher

  简化后Watcher在new时,最终会调用自己的get方法,get方法中第一个语句pushTarget(this)是开启数据驱动的第一把钥匙。

  pushTarget将传入的Watcher对象赋值给了Dep.target,还记得在讲Object.defineProperty时提到了,Dep.target.update是更新view的触发点,在这里终于找到了!

  我们看到update方法最后执行了queueWatcher,继续看下去发现,这其实是一个更新队列,vue对同一个微任务的所有update进行了收集更新,最终执行了watcher.run,run方法又执行了getAndInvoke方法,getAndInvoke又执行了this.get方法。

  到来一大圈,终于找到:在改变属性值时,触发了Dep.target所对应的Watcher的this.get方法,this.get方法其实就是传入进来的回调函数。回想前面介绍的,vue在挂载到真实dom时,newWatcher传入的回调是updateComponent。串联起来得到了结论:

  我们在get属性时,Dep派发器收集到了Watcher当作依赖

  当我们set属性时,Dep派发器事件分发,使所有收集到的依赖执行this.get,这时候view会更新。

  从宏观角度看问题

  当我们newVue时,首先会将传入的data将被vue包装为观察者,所有get和set行为都会捕捉到并执行响应的操作

  接下来vue会将vue对象挂载到真实dom(其实指的虚拟的渲染),这个时候new一个Watcher,在newWatcher时,会执行一次this.get初始化一次值,对标updateComponent函数,这个时候会触发vue渲染过程

  在vue渲染过程中,所有的数据都需要进行get行为才能得到值并给真实dom赋值,因此这时触发了所有data属性的get,并且此时Dep.target是updateComponent的Watcher,因此所有的data属性派发器都收集到了此Watcher,在set时,派发器notify进行事件分发,收集到的依赖Watcher都得到了通知进行update,所有又会执行updateCompoent进行更新view。

看完上述内容,你们掌握Vue数据驱动里的Watcher是什么意思的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

方法 数据 属性 更新 驱动 问题 意思 事件 内容 函数 对象 时候 更多 行为 过程 束手无策 为此 接下来 任务 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 首份网络安全报告 四川有哪些服务器公司云服务器 怎么搞软件开发需求 属于数据库中的一条记录是 软件开发项目主管职责 软件开发小厂工资不高天天加班 网络安全时间特点 广州诚彬互联网科技有限公司招聘 扫描与网络安全无关 供电公司加强网络安全管控 税务软件开发工资 关于房产信息网络安全的文案 万户网络技术支持 电脑监控管理服务器 网络安全座谈会等级保护发言 服务器装什么防护软件好 举一个数据库表的实例 网络安全售后服务承诺书 互联网十大科技股票 网络安全小视频防诈骗 九江云服务器要多少费用 资金盘网站服务器ip怎么查 云南智慧团建软件开发系统 张家界社交软件开发公司 服务器io读写3000 无锡小程序软件开发工程师 软件开发面试笔试题及答案 网络安全模式看电影 我国实行什么形式的网络安全 双鑫网络技术有限公司 慢燃
0