vnode.contextVNode = contextVNode
if (vnode.flags & VNodeFlags.COMPONENT_STATEFUL_KEPT_ALIVE) {
// kept-alive
- activateComponentInstance(vnode)
+ activateComponentInstance(vnode, container, endNode)
} else {
mountComponentInstance(
vnode,
if (nextContainer !== prevContainer) {
switch (nextVNode.childFlags) {
case ChildrenFlags.SINGLE_VNODE:
- moveVNode(nextChildren as MountedVNode, nextContainer, null)
+ insertVNode(nextChildren as MountedVNode, nextContainer, null)
break
case ChildrenFlags.NO_CHILDREN:
break
default:
for (let i = 0; i < (nextChildren as MountedVNode[]).length; i++) {
- moveVNode((nextChildren as MountedVNode[])[i], nextContainer, null)
+ insertVNode(
+ (nextChildren as MountedVNode[])[i],
+ nextContainer,
+ null
+ )
}
break
}
isSVG: boolean
) {
const refNode = platformNextSibling(getVNodeLastEl(prevVNode))
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
mount(nextVNode, container, contextVNode, isSVG, refNode)
}
)
break
case ChildrenFlags.NO_CHILDREN:
- removeVNode(prevChildren as MountedVNode, container)
+ reinsertVNode(prevChildren as MountedVNode, container)
break
default:
- removeVNode(prevChildren as MountedVNode, container)
+ reinsertVNode(prevChildren as MountedVNode, container)
mountArrayChildren(
nextChildren as VNode[],
container,
}
} else if (prevLength > nextLength) {
for (i = commonLength; i < prevLength; i++) {
- removeVNode(prevChildren[i], container)
+ reinsertVNode(prevChildren[i], container)
}
}
}
}
} else if (j > nextEnd) {
while (j <= prevEnd) {
- removeVNode(prevChildren[j++], container)
+ reinsertVNode(prevChildren[j++], container)
}
} else {
let prevStart = j
if (canRemoveWholeContent) {
canRemoveWholeContent = false
while (i > prevStart) {
- removeVNode(prevChildren[prevStart++], container)
+ reinsertVNode(prevChildren[prevStart++], container)
}
}
if (pos > j) {
}
}
if (!canRemoveWholeContent && j > nextEnd) {
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
}
} else if (!canRemoveWholeContent) {
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
}
}
} else {
if (canRemoveWholeContent) {
canRemoveWholeContent = false
while (i > prevStart) {
- removeVNode(prevChildren[prevStart++], container)
+ reinsertVNode(prevChildren[prevStart++], container)
}
}
nextVNode = nextChildren[j]
patch(prevVNode, nextVNode, container, contextVNode, isSVG)
patched++
} else if (!canRemoveWholeContent) {
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
}
} else if (!canRemoveWholeContent) {
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
}
}
}
pos = i + nextStart
nextVNode = nextChildren[pos]
nextPos = pos + 1
- moveVNode(
+ insertVNode(
nextVNode as MountedVNode,
container,
nextPos < nextLength ? nextChildren[nextPos].el : endNode
}
}
- function moveVNode(
+ function insertVNode(
vnode: MountedVNode,
container: RenderNode,
refNode: RenderNode | null
if (flags & VNodeFlags.FRAGMENT) {
switch (childFlags) {
case ChildrenFlags.SINGLE_VNODE:
- moveVNode(children as MountedVNode, container, refNode)
+ insertVNode(children as MountedVNode, container, refNode)
break
case ChildrenFlags.NO_CHILDREN:
break
default:
for (let i = 0; i < (children as MountedVNode[]).length; i++) {
- moveVNode((children as MountedVNode[])[i], container, refNode)
+ insertVNode((children as MountedVNode[])[i], container, refNode)
}
}
} else {
null
)
} else if (childFlags === ChildrenFlags.SINGLE_VNODE) {
- removeVNode(children as MountedVNode, vnode.tag as RenderNode)
+ reinsertVNode(children as MountedVNode, vnode.tag as RenderNode)
}
}
if (ref) {
}
}
- function removeVNode(vnode: MountedVNode, container: RenderNode) {
+ function reinsertVNode(vnode: MountedVNode, container: RenderNode) {
unmount(vnode)
const { el, flags, children, childFlags } = vnode
if (container && el) {
if (flags & VNodeFlags.FRAGMENT) {
switch (childFlags) {
case ChildrenFlags.SINGLE_VNODE:
- removeVNode(children as MountedVNode, container)
+ reinsertVNode(children as MountedVNode, container)
break
case ChildrenFlags.NO_CHILDREN:
platformRemoveChild(container, el)
break
default:
for (let i = 0; i < (children as MountedVNode[]).length; i++) {
- removeVNode((children as MountedVNode[])[i], container)
+ reinsertVNode((children as MountedVNode[])[i], container)
}
}
} else {
platformClearContent(container)
} else {
for (let i = 0; i < children.length; i++) {
- removeVNode(children[i], container)
+ reinsertVNode(children[i], container)
}
}
}
)
vnode.el = instance.$vnode.el
- if (__DEV__) {
+ if (__COMPAT__) {
// expose __vue__ for devtools
;(vnode.el as any).__vue__ = instance
}
)
const el = nextVNode.el as RenderNode
- if (__DEV__) {
+ if (__COMPAT__) {
// expose __vue__ for devtools
;(el as any).__vue__ = instance
}
// Keep Alive ----------------------------------------------------------------
- function activateComponentInstance(vnode: VNode) {
+ function activateComponentInstance(
+ vnode: VNode,
+ container: RenderNode | null,
+ endNode: RenderNode | null
+ ) {
const instance = vnode.children as ComponentInstance
- vnode.el = instance.$el
+ vnode.el = instance.$el as RenderNode
+ if (container != null) {
+ insertVNode(instance.$vnode, container, endNode)
+ }
lifecycleHooks.push(() => {
callActivatedHook(instance, true)
})
patch(prevVNode, vnode, container, null, false)
container.vnode = vnode
} else {
- removeVNode(prevVNode, container)
+ reinsertVNode(prevVNode, container)
container.vnode = null
}
}