mirror of https://github.com/vuejs/core.git
fix(Transition): handle KeepAlive + transition leaving edge case
This commit is contained in:
parent
466b30f404
commit
16deaafc2c
|
@ -24,7 +24,7 @@ import { SchedulerJobFlags } from '../scheduler'
|
|||
|
||||
type Hook<T = () => void> = T | T[]
|
||||
|
||||
const leaveCbKey: unique symbol = Symbol('_leaveCb')
|
||||
export const leaveCbKey: unique symbol = Symbol('_leaveCb')
|
||||
const enterCbKey: unique symbol = Symbol('_enterCb')
|
||||
|
||||
export interface BaseTransitionProps<HostElement = RendererElement> {
|
||||
|
|
|
@ -85,7 +85,7 @@ import { initFeatureFlags } from './featureFlags'
|
|||
import { isAsyncWrapper } from './apiAsyncComponent'
|
||||
import { isCompatEnabled } from './compat/compatConfig'
|
||||
import { DeprecationTypes } from './compat/compatConfig'
|
||||
import type { TransitionHooks } from './components/BaseTransition'
|
||||
import { type TransitionHooks, leaveCbKey } from './components/BaseTransition'
|
||||
|
||||
export interface Renderer<HostElement = RendererElement> {
|
||||
render: RootRenderFunction<HostElement>
|
||||
|
@ -2057,6 +2057,9 @@ function baseCreateRenderer(
|
|||
}
|
||||
}
|
||||
const performLeave = () => {
|
||||
if (el!._isLeaving) {
|
||||
el
|
||||
}
|
||||
leave(el!, () => {
|
||||
remove()
|
||||
afterLeave && afterLeave()
|
||||
|
|
Loading…
Reference in New Issue