]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor: remove manual `TransitionGroup` update triggering and the `group` flag...
authordaiwei <daiwei521@126.com>
Thu, 4 Dec 2025 05:51:23 +0000 (13:51 +0800)
committeredison <daiwei521@126.com>
Thu, 4 Dec 2025 07:30:34 +0000 (15:30 +0800)
packages/runtime-vapor/src/apiCreateFor.ts
packages/runtime-vapor/src/block.ts
packages/runtime-vapor/src/components/Transition.ts
packages/runtime-vapor/src/components/TransitionGroup.ts

index 1ef4d5d8bec39955809e7ba471a3b1b757f9d9cd..5e46056b3b2a9b0cd6bb7fd024715f529be3293f 100644 (file)
@@ -39,7 +39,6 @@ import {
   isLastInsertion,
   resetInsertionState,
 } from './insertionState'
-import { triggerTransitionGroupUpdate } from './components/TransitionGroup'
 
 class ForBlock extends VaporFragment {
   scope: EffectScope | undefined
@@ -131,12 +130,6 @@ export const createFor = (
     newBlocks = new Array(newLength)
     let isFallback = false
 
-    // trigger TransitionGroup update hooks
-    const transitionHooks = frag.$transition
-    if (transitionHooks && transitionHooks.group && isMounted) {
-      triggerTransitionGroupUpdate(transitionHooks)
-    }
-
     const prevSub = setActiveSub()
 
     if (!isMounted) {
index 3163cb92cc276b960f796a66a89badb1a47ccdb0..323ef7beefc90ebbd2b1f2d2feca8846c3165388 100644 (file)
@@ -28,8 +28,6 @@ export interface VaporTransitionHooks extends TransitionHooks {
   instance: VaporComponentInstance
   // mark transition hooks as disabled
   disabled?: boolean
-  // indicates a group transition
-  group?: boolean
 }
 
 export interface TransitionOptions {
index d6666e8192535e89284377cbded059dceb3a7494..5459c29b90a12448e0e8cd3dc039cfc99a252168 100644 (file)
@@ -208,7 +208,7 @@ export function applyTransitionHooks(
     return hooks
   }
 
-  const { props, instance, state, delayedLeave, group } = hooks
+  const { props, instance, state, delayedLeave } = hooks
   let resolvedHooks = resolveTransitionHooks(
     child,
     props,
@@ -217,7 +217,6 @@ export function applyTransitionHooks(
     hooks => (resolvedHooks = hooks as VaporTransitionHooks),
   )
   resolvedHooks.delayedLeave = delayedLeave
-  resolvedHooks.group = group
   child.$transition = resolvedHooks
   if (isFrag) setTransitionHooksOnFragment(block, resolvedHooks)
 
index 568c67b1f8407023f3f0d7086926fe36f44c4ce3..76d5acd1c1a0944fb962152bdef765942a5a0c33 100644 (file)
@@ -10,12 +10,11 @@ import {
   hasCSSTransform,
   onBeforeUpdate,
   onUpdated,
-  queuePostFlushCb,
   resolveTransitionProps,
   useTransitionState,
   warn,
 } from '@vue/runtime-dom'
-import { extend, invokeArrayFns, isArray } from '@vue/shared'
+import { extend, isArray } from '@vue/shared'
 import {
   type Block,
   type TransitionBlock,
@@ -125,7 +124,6 @@ export const VaporTransitionGroup: ObjectVaporComponent = decorate({
       props: cssTransitionProps,
       state,
       instance,
-      group: true,
     } as VaporTransitionHooks)
 
     children = getTransitionBlocks(slottedBlock)
@@ -139,7 +137,6 @@ export const VaporTransitionGroup: ObjectVaporComponent = decorate({
             state,
             instance!,
           )
-          hooks.group = true
           setTransitionHooks(child, hooks)
         } else if (__DEV__) {
           warn(`<transition-group> children must be keyed`)
@@ -216,23 +213,3 @@ function getFirstConnectedChild(
     if (el.isConnected) return el
   }
 }
-
-/**
- * The implementation of TransitionGroup relies on the onBeforeUpdate and onUpdated hooks.
- * However, when the slot content of TransitionGroup updates, it does not trigger the
- * onBeforeUpdate and onUpdated hooks. Therefore, it is necessary to manually trigger
- * the TransitionGroup update hooks to ensure its proper work.
- */
-export function triggerTransitionGroupUpdate(
-  transition: VaporTransitionHooks,
-): void {
-  const { instance } = transition
-  if (!instance.isUpdating) {
-    instance.isUpdating = true
-    if (instance.bu) invokeArrayFns(instance.bu)
-    queuePostFlushCb(() => {
-      instance.isUpdating = false
-      if (instance.u) invokeArrayFns(instance.u)
-    })
-  }
-}