From ec939946a64beed566014df8967839c7e768fa76 Mon Sep 17 00:00:00 2001 From: daiwei Date: Thu, 30 Oct 2025 09:22:54 +0800 Subject: [PATCH] fix(Transition): skip transition if el is hidden by v-show --- packages/runtime-core/src/renderer.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 89b8be6a18..1d408e9868 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -2054,7 +2054,9 @@ function baseCreateRenderer( const needTransition = moveType !== MoveType.REORDER && shapeFlag & ShapeFlags.ELEMENT && - transition + transition && + // #14031 skip transition hooks if el is hidden by v-show + !isHiddenByVShow(vnode) if (needTransition) { if (moveType === MoveType.ENTER) { transition!.beforeEnter(el!) @@ -2565,3 +2567,9 @@ export function invalidateMount(hooks: LifecycleHook): void { hooks[i].flags! |= SchedulerJobFlags.DISPOSED } } + +function isHiddenByVShow(vnode: VNode): boolean { + // @ts-expect-error vShow has this internal name + const vShowDir = vnode.dirs && vnode.dirs.find(dir => dir.name === 'show') + return !!(vShowDir && !vShowDir.value) +} -- 2.47.3