渲染watcher中的get()是什么时候执行的?

来源:2-3 Vue 实例挂载的实现

愿等花开

2021-07-10

/**

  • Evaluate the getter, and re-collect dependencies.
    */
    get () {
    pushTarget(this)
    let value
    const vm = this.vm
    try {
    value = this.getter.call(vm, vm)
    } catch (e) {
    if (this.user) {
    handleError(e, vm, getter for watcher "${this.expression}")
    } else {
    throw e
    }
    } finally {
    // “touch” every property so they are all tracked as
    // dependencies for deep watching
    if (this.deep) {
    traverse(value)
    }
    popTarget()
    this.cleanupDeps()
    }
    return value
    }
写回答

1回答

ustbhuangyi

2021-07-11

当执行 render 函数的时候,如果访问了响应式数据,就会触发 getter,此时当前计算的 watcher 就是 render watcher

0
0

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程