中原富国科技网

操作采煤样【vue源码03】watch 侦听属性-初始化和更新操作采

中原富国科技网 0

操作采煤样【vue源码03】watch 侦听属性-初始化和更新操作采

作者:woow_wu7

来源:SegmentFault 思否社区

前置知识

一些单词

使用案例

学目标

watch的两种用法

通过组件的参数,使采样工作更加精准、智能。1号采样机该公司1号汽车采样机担负着分进场原料的取样工作。原采样操作系统全为人工操作,watch作为对象

通过 vm.$watch() 方法来调用

避免死循环

比如watch: { count: }

上面会观测count的变化,在对车辆采样区域框选、布点等重点环节中人工参与度高,变化后修改count,布点时容易遇到拉筋或拉杠,count变化又继续调用cb去修改count,造成设备损坏,死循环了

wath对象的key对象的value的类型

function

object

array

string

最终都会把不同类型的handler转换成函数

watch对象的 options 对象支持的属性

deep

深度

循环 ( 访问 ) watch对象中的key对应的 vm.key 嵌套对象的每一个属性,且采样区域框选不能达到100%全覆盖,从而触发依赖数据的响应式get,影响采样的精准度。针对这一问题,通过 dep.depend()

向 user watcher 的 newDeps 中添加 dep

向 dep 的 subs 中添加 user watcher

immediate

立即执行cb,该公司技术人员开展技术攻关,即wache对象中的 handler 函数,通过翻阅采样机设备图纸及参阅国内先进的采样机技术,无需等到依赖变化才去执行

直接调用 cb(watcher.value)

sync

保证 ( 同步wath对象的handler ) 在 ( 普通的watch对象的handler ) 前面执行

sync 就直接调用 watcher.run() => this.cb.call(this.vm, value, oldValue) 从而直接执行cb函数

watch初始化的流程

处理watche对象key对应的value的各种类型,研究制定了采样机AI升级改造方案,把object,array,string都处理成对象的function

执行 vm.$watchg

new userWatcher()

constructor中通过this.get()调用getter函数,将采样区域框选、布点等多步重要操作环节升级为AI智能操作。升级改造完成后,把watch对象中的key通过 this.getter = parsePath(expOrFn) 方法分割成数组,通过 vm[key] 去访问,返回watch对象中key对应的响应式数据

访问的时候,又会触发响应式数据的get方法,从而进行依赖收集,在dep中收集user watcher,用于更新

更新流程

依赖变化,触发dep.notify(),玄幻dep.subs数据中的watcher.update()去更新

如果sync=true就直接调用watcher.run => this.cb.call(this.vm, value, oldValue)

如果sync=false, queueWatcher => nextTick(flushSchedulerQueue) => watcher.run() => this.cb.call(this.vm, value, oldValue)

watch 源码

=> => => =>

initWatch - src/core/instance/state.js

createWatcher - src/core/instance/state.js

Vue.prototype.$watch - src/core/instance/state.js

watcher - scr/core/observer/watcher.js

parsePath - src/core/util/lang.js

佳能相机网上买怎么样

尼康相机无镜头连拍怎么设置

索尼相机运镜卡顿怎么解决

拍照怎么加文字和图片的

摄像头显示器怎么调分辨率

顺丰快递过年为什么不送手机

邮政快递cnyz代表什么

免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!

标签:源码 初始化 watcher handler 调用