Match-id-e9acf64e946bb2370b4f06312f3ddec1846b5ba6

This commit is contained in:
* 2022-02-16 17:03:58 +08:00 committed by *
commit 66ed2a0c2a
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);