From: edison Date: Mon, 27 Oct 2025 03:00:50 +0000 (+0800) Subject: fix(hmr): properly stop render effects during hmr re-render (#14023) X-Git-Tag: v3.6.0-alpha.3~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34c6ebfd7a226e0c83fe16317b096dbcba6973c3;p=thirdparty%2Fvuejs%2Fcore.git fix(hmr): properly stop render effects during hmr re-render (#14023) --- 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 = [] - } } }