请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于patch函数中insertedVnodeQueue的问题

如果现在是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。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信