组件递归创建的疑问

来源:3-5 patch(下)

_小_七_

2020-06-20

当组件里面包含组件的时候,会不断的递归创建,
我的疑问是:
vm.$node为组件的占位vnode,这句话是啥意思?什么是占位vnode?

vm._vnode为组件的渲染vnode,我理解这个就是当前vm实例的一个virtual dom

写回答

1回答

ustbhuangyi

2020-06-20

其实叫 “组件 vnode” 和 “子树 vnode” 更好理解。

我来举个例子说明,在父组件 App 中里引入了 Hello 组件:

<template>
 <div class="app">
   <p>This is an app.</p>
   <hello></hello>
 </div>
</template>

 

Hello 组件中是 <div> 标签包裹着一个 <p> 标签:

<template>
 <div class="hello">
   <p>Hello, Vue 3.0!</p>
 </div>
</template>

 

在 App 组件中, <hello> 节点渲染生成的 vnode ,我们称作“组件 vnode”,也就是 vm.$vnode。而 Hello 组件内部整个 DOM 节点对应的 vnode 就是执行 vm._render 渲染生成对应 vnode,我们可以把它称作“子树 vnode”,也就是 vm._vnode。


0
3
_小_七_
非常感谢!
2020-06-21
共3条回复

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

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

4984 学习 · 1037 问题

查看课程