patch 过程中 insertedVnodeQueue 的问题
来源:3-9 组件注册(上)

前端_未入门
2020-02-16
老师您好
每次 patch 过程中都维护一份 insertedVnodeQueue 这个数组,组件的创建过程是个深度遍历,那么子组件 patch 结束后不是可以把 vnode 插入到这个数组中了嘛
然后执行这个 invokeInsertHook 不是也可以执行到当前组件的 mounted 钩子函数吗?
我的疑问是为什么 vue 在 invokeInsertHook 函数做红框这步操作
然后在 initComponent 中做下面这个拍平的操作
把所有的 vnode 都拍到根组件的 insertedVnodeQueue ,搞成一个一维数组再遍历执行对应的 mounted 钩子函数呢?
写回答
1回答
-
通过注释就可以看到,如果这个 vnode 是这个组件渲染的 root vnode,那么它的 mounted 钩子执行需要等待他们真正插入到 dom 后再调用,所以把它的父组件 vnode 的 data.pendingInsert 设置为 true,而不直接调用 mounted 钩子。
032020-02-16
相似问题