From e0241dc0303fddd1a4e018f607c2d37086950a63 Mon Sep 17 00:00:00 2001 From: edison Date: Sat, 21 May 2022 08:42:26 +0000 Subject: [PATCH 1/4] fix(transition): improve handle cancel leave before next frame --- packages/runtime-dom/src/components/Transition.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/runtime-dom/src/components/Transition.ts b/packages/runtime-dom/src/components/Transition.ts index f33d4136755..78e86af75f3 100644 --- a/packages/runtime-dom/src/components/Transition.ts +++ b/packages/runtime-dom/src/components/Transition.ts @@ -174,9 +174,8 @@ export function resolveTransitionProps( done && done() } - let isLeaving = false const finishLeave = (el: Element, done?: () => void) => { - isLeaving = false + el._isLeaving = false removeTransitionClass(el, leaveFromClass) removeTransitionClass(el, leaveToClass) removeTransitionClass(el, leaveActiveClass) @@ -224,7 +223,7 @@ export function resolveTransitionProps( onEnter: makeEnterHook(false), onAppear: makeEnterHook(true), onLeave(el, done) { - isLeaving = true + el._isLeaving = true const resolve = () => finishLeave(el, done) addTransitionClass(el, leaveFromClass) if (__COMPAT__ && legacyClassEnabled) { @@ -234,7 +233,7 @@ export function resolveTransitionProps( forceReflow() addTransitionClass(el, leaveActiveClass) nextFrame(() => { - if (!isLeaving) { + if (!el._isLeaving) { // cancelled return } From c2dcfef489658c34d4a033c32d69f9b0b105a749 Mon Sep 17 00:00:00 2001 From: edison Date: Sat, 21 May 2022 08:59:55 +0000 Subject: [PATCH 2/4] chore: improve code --- packages/runtime-dom/src/components/Transition.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/components/Transition.ts b/packages/runtime-dom/src/components/Transition.ts index 78e86af75f3..0c3b5504f28 100644 --- a/packages/runtime-dom/src/components/Transition.ts +++ b/packages/runtime-dom/src/components/Transition.ts @@ -174,7 +174,7 @@ export function resolveTransitionProps( done && done() } - const finishLeave = (el: Element, done?: () => void) => { + const finishLeave = (el: Element & { _isLeaving?: boolean }, done?: () => void) => { el._isLeaving = false removeTransitionClass(el, leaveFromClass) removeTransitionClass(el, leaveToClass) @@ -222,7 +222,7 @@ export function resolveTransitionProps( }, onEnter: makeEnterHook(false), onAppear: makeEnterHook(true), - onLeave(el, done) { + onLeave(el: Element & { _isLeaving?: boolean }, done) { el._isLeaving = true const resolve = () => finishLeave(el, done) addTransitionClass(el, leaveFromClass) From 66daa16850522200d0437fe165d693b5728445c3 Mon Sep 17 00:00:00 2001 From: edison Date: Sat, 21 May 2022 09:13:59 +0000 Subject: [PATCH 3/4] trigger-ci -n From 425b54c35552437ae641eb5b4e4938166e021f83 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 22 May 2022 19:58:54 -0400 Subject: [PATCH 4/4] formatting --- packages/runtime-dom/src/components/Transition.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/runtime-dom/src/components/Transition.ts b/packages/runtime-dom/src/components/Transition.ts index 0c3b5504f28..0c1a30f6b95 100644 --- a/packages/runtime-dom/src/components/Transition.ts +++ b/packages/runtime-dom/src/components/Transition.ts @@ -174,7 +174,10 @@ export function resolveTransitionProps( done && done() } - const finishLeave = (el: Element & { _isLeaving?: boolean }, done?: () => void) => { + const finishLeave = ( + el: Element & { _isLeaving?: boolean }, + done?: () => void + ) => { el._isLeaving = false removeTransitionClass(el, leaveFromClass) removeTransitionClass(el, leaveToClass)