patch 过程中 insertedVnodeQueue 的问题

来源:3-9 组件注册(上)

前端_未入门

2020-02-16

老师您好
图片描述
每次 patch 过程中都维护一份 insertedVnodeQueue 这个数组,组件的创建过程是个深度遍历,那么子组件 patch 结束后不是可以把 vnode 插入到这个数组中了嘛
图片描述
然后执行这个 invokeInsertHook 不是也可以执行到当前组件的 mounted 钩子函数吗?
我的疑问是为什么 vue 在 invokeInsertHook 函数做红框这步操作
图片描述
然后在 initComponent 中做下面这个拍平的操作
图片描述
把所有的 vnode 都拍到根组件的 insertedVnodeQueue ,搞成一个一维数组再遍历执行对应的 mounted 钩子函数呢?

写回答

1回答

ustbhuangyi

2020-02-16

通过注释就可以看到,如果这个 vnode 是这个组件渲染的  root vnode,那么它的 mounted 钩子执行需要等待他们真正插入到 dom 后再调用,所以把它的父组件 vnode 的 data.pendingInsert 设置为 true,而不直接调用 mounted 钩子。

0
3
前端_未入门
回复
ustbhuangyi
非常感谢老师的回答,祝老师生活愉快
2020-02-16
共3条回复

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

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

4986 学习 · 1038 问题

查看课程