From 34c6ebfd7a226e0c83fe16317b096dbcba6973c3 Mon Sep 17 00:00:00 2001 From: edison Date: Mon, 27 Oct 2025 11:00:50 +0800 Subject: [PATCH] fix(hmr): properly stop render effects during hmr re-render (#14023) --- .../runtime-vapor/__tests__/components/Teleport.spec.ts | 2 +- packages/runtime-vapor/src/renderEffect.ts | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/runtime-vapor/__tests__/components/Teleport.spec.ts b/packages/runtime-vapor/__tests__/components/Teleport.spec.ts index 45a2e5858c..d4282ab8a6 100644 --- a/packages/runtime-vapor/__tests__/components/Teleport.spec.ts +++ b/packages/runtime-vapor/__tests__/components/Teleport.spec.ts @@ -195,7 +195,7 @@ describe('renderer: VaporTeleport', () => { expect(target.innerHTML).toBe('
teleported 2
') }) - test.todo('parent rerender + toggle disabled', async () => { + test('parent rerender + toggle disabled', async () => { const target = document.createElement('div') const root = document.createElement('div') const parentId = 'test3-parent-rerender' diff --git a/packages/runtime-vapor/src/renderEffect.ts b/packages/runtime-vapor/src/renderEffect.ts index d41ee35719..3c937c0ed5 100644 --- a/packages/runtime-vapor/src/renderEffect.ts +++ b/packages/runtime-vapor/src/renderEffect.ts @@ -41,6 +41,9 @@ export class RenderEffect extends ReactiveEffect { this.onTrigger = instance.rtg ? e => invokeArrayFns(instance.rtg!, e) : void 0 + + // register effect for stopping them during HMR rerender + ;(instance.renderEffects || (instance.renderEffects = [])).push(this) } job.i = instance } @@ -71,11 +74,6 @@ export class RenderEffect extends ReactiveEffect { setCurrentInstance(...prev) if (__DEV__ && instance) { startMeasure(instance, `renderEffect`) - - if (instance.renderEffects) { - instance.renderEffects.forEach(e => e.stop()) - instance.renderEffects = [] - } } } -- 2.47.3