From b07fa60d5f723c2f84c3840f9e05768c89c2fd11 Mon Sep 17 00:00:00 2001 From: edison Date: Thu, 20 Nov 2025 22:11:41 +0800 Subject: [PATCH] fix(runtime-vapor): prevent fragment `updated` hooks from running before the fragment is mounted. (#14123) --- packages/runtime-vapor/src/apiCreateFor.ts | 2 +- packages/runtime-vapor/src/fragment.ts | 3 ++- packages/runtime-vapor/src/vdomInterop.ts | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/runtime-vapor/src/apiCreateFor.ts b/packages/runtime-vapor/src/apiCreateFor.ts index 424e892c89..b1841f6dcb 100644 --- a/packages/runtime-vapor/src/apiCreateFor.ts +++ b/packages/runtime-vapor/src/apiCreateFor.ts @@ -403,7 +403,7 @@ export const createFor = ( oldBlocks = [] } - if (frag.updated) frag.updated.forEach(m => m()) + if (isMounted && frag.updated) frag.updated.forEach(m => m()) setActiveSub(prevSub) } diff --git a/packages/runtime-vapor/src/fragment.ts b/packages/runtime-vapor/src/fragment.ts index df4891c328..96dcf6e7dd 100644 --- a/packages/runtime-vapor/src/fragment.ts +++ b/packages/runtime-vapor/src/fragment.ts @@ -191,7 +191,8 @@ export class DynamicFragment extends VaporFragment { if (parent) { insert(this.nodes, parent, this.anchor) - if (this.updated) { + // anchor isConnected indicates the this render is updated + if (this.anchor.isConnected && this.updated) { this.updated.forEach(hook => hook(this.nodes)) } } diff --git a/packages/runtime-vapor/src/vdomInterop.ts b/packages/runtime-vapor/src/vdomInterop.ts index 3c4a961f0c..7f051e064f 100644 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@ -383,7 +383,7 @@ function createVDOMComponent( } frag.nodes = vnode.el as any - if (frag.updated) frag.updated.forEach(m => m()) + if (isMounted && frag.updated) frag.updated.forEach(m => m()) } frag.remove = unmount @@ -450,7 +450,7 @@ function renderVDOMSlot( } } - if (frag.updated) frag.updated.forEach(m => m()) + if (isMounted && frag.updated) frag.updated.forEach(m => m()) } const render = (parentNode?: ParentNode, anchor?: Node | null) => { -- 2.47.3