From 822b2fd7972c136e67bfef72c30d5d1a65ea7958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=9B=E7=9A=93?= Date: Sat, 19 Dec 2020 21:54:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=A0=E9=80=92=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=9A=84=20removeIndex=20=E7=BB=99=E5=88=B0=20subtreeModified?= =?UTF-8?q?=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/document/node/node-children.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index 142f13b41..d8b4f3cf1 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -128,6 +128,8 @@ export class NodeChildren { slotNode.remove(useMutator, purge); }, (iterable, idx) => (iterable as [])[idx]); } + // 需要在从 children 中删除 node 前记录下 index,internalSetParent 中会执行删除(unlink)操作 + const i = this.children.indexOf(node); if (purge) { // should set parent null node.internalSetParent(null, useMutator); @@ -142,14 +144,13 @@ export class NodeChildren { document.selection.remove(node.id); document.destroyNode(node); this.emitter.emit('change'); - const i = this.children.indexOf(node); if (useMutator) { this.reportModified(node, this.owner, { type: 'remove', removeIndex: i, removeNode: node }); } - if (i < 0) { - return false; + // purge 为 true 时,已在 internalSetParent 中删除了子节点 + if (i > -1 && !purge) { + this.children.splice(i, 1); } - this.children.splice(i, 1); return false; }