Match-id-8002edd63f044bbac50a823f0b125e8c0c59c72f

This commit is contained in:
* 2022-02-16 17:33:13 +08:00 committed by *
commit 589e982cc4
1 changed files with 11 additions and 6 deletions

View File

@ -239,11 +239,7 @@ function insertOrAppendPlacementNode(
const { tag, realNode } = node; const { tag, realNode } = node;
if (isDomVNode(node)) { if (isDomVNode(node)) {
if (beforeDom) { insertDom(parent, realNode, beforeDom);
insertDomBefore(parent, realNode, beforeDom);
} else {
appendChildElement(parent, realNode);
}
} else if (tag === DomPortal) { } else if (tag === DomPortal) {
// 这里不做处理直接在portal中处理 // 这里不做处理直接在portal中处理
} else { } else {
@ -256,6 +252,14 @@ function insertOrAppendPlacementNode(
} }
} }
function insertDom(parent, realNode, beforeDom) {
if (beforeDom) {
insertDomBefore(parent, realNode, beforeDom);
} else {
appendChildElement(parent, realNode);
}
}
// 遍历所有子节点删除dom节点detach ref 和 调用componentWillUnmount() // 遍历所有子节点删除dom节点detach ref 和 调用componentWillUnmount()
function unmountDomComponents(vNode: VNode): void { function unmountDomComponents(vNode: VNode): void {
let currentParentIsValid = false; let currentParentIsValid = false;
@ -323,7 +327,8 @@ function submitClear(vNode: VNode): void {
// 在所有子项都卸载后删除dom树中的节点 // 在所有子项都卸载后删除dom树中的节点
removeChildDom(currentParent, vNode.realNode); removeChildDom(currentParent, vNode.realNode);
currentParent.append(cloneDom); const realNodeNext = getSiblingDom(vNode);
insertDom(currentParent, cloneDom, realNodeNext);
vNode.realNode = cloneDom; vNode.realNode = cloneDom;
attachRef(vNode); attachRef(vNode);
FlagUtils.removeFlag(vNode, Clear); FlagUtils.removeFlag(vNode, Clear);