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[]
|
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')
|
const enterCbKey: unique symbol = Symbol('_enterCb')
|
||||||
|
|
||||||
export interface BaseTransitionProps<HostElement = RendererElement> {
|
export interface BaseTransitionProps<HostElement = RendererElement> {
|
||||||
|
|
|
@ -85,7 +85,7 @@ import { initFeatureFlags } from './featureFlags'
|
||||||
import { isAsyncWrapper } from './apiAsyncComponent'
|
import { isAsyncWrapper } from './apiAsyncComponent'
|
||||||
import { isCompatEnabled } from './compat/compatConfig'
|
import { isCompatEnabled } from './compat/compatConfig'
|
||||||
import { DeprecationTypes } 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> {
|
export interface Renderer<HostElement = RendererElement> {
|
||||||
render: RootRenderFunction<HostElement>
|
render: RootRenderFunction<HostElement>
|
||||||
|
@ -2057,6 +2057,9 @@ function baseCreateRenderer(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const performLeave = () => {
|
const performLeave = () => {
|
||||||
|
if (el!._isLeaving) {
|
||||||
|
el
|
||||||
|
}
|
||||||
leave(el!, () => {
|
leave(el!, () => {
|
||||||
remove()
|
remove()
|
||||||
afterLeave && afterLeave()
|
afterLeave && afterLeave()
|
||||||
|
|
Loading…
Reference in New Issue