diff --git a/libs/horizon/src/renderer/TreeBuilder.ts b/libs/horizon/src/renderer/TreeBuilder.ts index 9ff1cd0d..020b58b2 100644 --- a/libs/horizon/src/renderer/TreeBuilder.ts +++ b/libs/horizon/src/renderer/TreeBuilder.ts @@ -57,12 +57,15 @@ function resetProcessingVariables(startUpdateVNode: VNode) { // 收集有变化的节点,在submit阶段继续处理 function collectDirtyNodes(vNode: VNode, parent: VNode): void { // 将子树和此vNode的所有效果附加到父树的效果列表中,子项的完成顺序会影响副作用顺序。 - if (vNode.dirtyNodes !== null && vNode.dirtyNodes.length) { + const dirtyNodes = vNode.dirtyNodes; + if (dirtyNodes !== null && dirtyNodes.length) { if (parent.dirtyNodes === null) { parent.dirtyNodes = [...vNode.dirtyNodes]; } else { parent.dirtyNodes.push(...vNode.dirtyNodes); } + dirtyNodes.length = 0; + vNode.dirtyNodes = null; } if (FlagUtils.hasAnyFlag(vNode)) {