通过createComponent
我们得到了组件vnode,接着会执行_update
函数,_update
的核心又是通过执行patch
来完成的,patch
是通过createElm
来实现的,我们来看其中的逻辑。
function createElm (
vnode,
insertedVnodeQueue,
parentElm,
refElm,
nested,
ownerArray,
index
) {
// ...
if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
return
}
// ...
}
在createElm
函数中,判断了是否为组件,如果是就直接返回,来看createComponent
中的逻辑。
function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
let i = vnode.data
if (isDef(i)) {
const isReactivated = isDef(vnode.componentInstance) && i.keepAlive
if (isDef(i = i