关于patch函数中insertedVnodeQueue的问题
来源:3-8 生命周期

归来仍是少年呀
2020-09-22
如果现在是App组件套着A组件,A组件套着B组件
是不是每一个组件都会维护一个 insertedVnodeQueue ,因为我看在patch的时候都会创建一遍
如果是App组件patch的时候,会把A组件vnode添加进这个数组,我还能理解,但是当A组件patch的时候,不就是新的insertedVnodeQueue了吗,这时候是不是将B组件vnode添加进新创建的insertedVnodeQueue中,那么当A组件patch完成后不就执行invokeInsertHook了吗,那不将B组件的mounted执行了吗,但是A组件patch完成的时候还没有挂载到页面中啊
A组件patch完成的时候,只执行到这,但是在patch函数的最后不是已经把invokeInsertHook执行了吗然后才会执行App组件patch中的下面的代码吧,执行红框中代码之前App组件肯定还没有挂载到页面中吧
写回答
1回答
-
insertedVnodeQueue 就是在一次 patch 过程中维护的插入的 vnode 的队列,它会收集待执行 mounted 钩子函数的 vnode 节点,在一次 patch 过程中,可能会有子组件,出现递归渲染子组件的过程,但是整个过程是同步的,子组件的 vnode 仍然会收集到 insertedVnodeQueue。而且过程中子组件的 vnode 会先添加进 insertedVnodeQueue,所以最终先执行子组件的 mounted,再执行父组件的 monted。
012020-09-23
相似问题