关于HelloWorld的更新

来源:5-8 组件更新(2)

MeSKiL

2019-11-08

老师。这里我理解的是,App组件先更新,然后执行到对HelloWorld执行prepatch,也就会重新赋值props触发set,这时候将HelloWorld的渲染watcher放入队列里,nexttick执行。
所以相对于App的更新,HelloWorld的更新是在nexttick里的。如果HelloWorld里也有组件,比如叫Header。那么Header是在HelloWorld更新后的nextTick执行的吗。
也就是如果套了10层组件,最后一层的组件更新和App可能差了10个tick

写回答

1回答

ustbhuangyi

2019-11-10

并不会,仍然会在一个 nextTick 内更新所有子组件,其原因是当最外层的组件开始执行 update 更新的时候,会在 nextTick 执行 flushSchedulerQueue,这个时候内部的 flushing 会设置为 true,之后执行 patch 然后执行 prepatch 更新子组件的时候,会触发子组件的重新渲染,这个时候子组件执行 queueWatcher 的时候,flushing 值为 true,那么就会同步把 queue 插入到当前执行的队列中,同步更新。

0
1
MeSKiL
非常感谢!
2019-11-10
共1条回复

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

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

4986 学习 · 1038 问题

查看课程