]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: save
authordaiwei <daiwei521@126.com>
Wed, 5 Mar 2025 03:43:24 +0000 (11:43 +0800)
committerdaiwei <daiwei521@126.com>
Wed, 5 Mar 2025 03:43:24 +0000 (11:43 +0800)
packages/runtime-dom/src/components/Transition.ts

index 90cdaba4e73ab4935717c679dc8b302f0a41e881..4b33566e3792e1a51616b933dd331d7632e15254 100644 (file)
@@ -7,6 +7,7 @@ import {
   assertNumber,
   compatUtils,
   h,
+  isVNode,
 } from '@vue/runtime-core'
 import { extend, isArray, isObject, toNumber } from '@vue/shared'
 
@@ -99,12 +100,20 @@ const decorate = (t: typeof Transition) => {
  * base Transition component, with DOM-specific logic.
  */
 export const Transition: FunctionalComponent<TransitionProps> =
-  /*@__PURE__*/ decorate((props, { slots, vapor }: any) => {
+  /*@__PURE__*/ decorate((props, { slots }) => {
+    const children = slots.default && slots.default()
+    const isVNodeChildren = isArray(children) && children.some(c => isVNode(c))
     const resolvedProps = resolveTransitionProps(props)
-    if (vapor) {
-      return vaporTransitionImpl!.applyTransition(resolvedProps, slots)
+    if (isVNodeChildren) {
+      return h(BaseTransition, resolvedProps, {
+        default: () => children,
+      })
     }
-    return h(BaseTransition, resolvedProps, slots)
+
+    // vapor transition
+    return vaporTransitionImpl!.applyTransition(resolvedProps, {
+      default: () => children,
+    })
   })
 
 /**