vnode 不存储 transition 动画状态,该状态由 transition 组件实例自身维护;vnode 仅携带 transition 配置引用、指令及组件类型标记等静态信息,不包含 isentering 等运行时字段。

Vue.js 中的 VNode 并不直接存储 Transition 组件的动画状态。动画状态(如进入中、离开中、完成标志等)由 Transition 组件实例自身维护,VNode 仅作为渲染描述符,记录组件类型、props、children 等静态结构信息,不承载运行时状态。
Transition 的状态由组件实例管理
Transition 是一个内置的函数式组件(Vue 3 中为 setup 组件),它在挂载和更新过程中:
- 通过 ref 或 reactive 数据跟踪当前阶段(
isShowing、status、activeMode等) - 监听子元素的插入/移除,调用
beforeEnter/enter/afterEnter等钩子 - 使用
nextFrame、getComputedStyle等机制控制 CSS 动画节奏 - 内部维护一个
transitionState对象(非公开 API),例如:{ mode: 'out-in', isLeaving: false, hasMoved: true }
VNode 只保留过渡所需的最小上下文
Transition 渲染时生成的 VNode(即其子节点的 VNode)会携带少量与过渡相关的标记,但不是状态本身:

