]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(transition): fix cancel leave regression (#5974)
authoredison <daiwei521@126.com>
Mon, 23 May 2022 00:02:15 +0000 (08:02 +0800)
committerGitHub <noreply@github.com>
Mon, 23 May 2022 00:02:15 +0000 (20:02 -0400)
fix #5973

packages/runtime-dom/src/components/Transition.ts

index f33d413675503cd0c0d4216bb7ef2c67a884b02d..0c1a30f6b9523aff36e97533f4d6e982ad6dd025 100644 (file)
@@ -174,9 +174,11 @@ export function resolveTransitionProps(
     done && done()
   }
 
-  let isLeaving = false
-  const finishLeave = (el: Element, done?: () => void) => {
-    isLeaving = false
+  const finishLeave = (
+    el: Element & { _isLeaving?: boolean },
+    done?: () => void
+  ) => {
+    el._isLeaving = false
     removeTransitionClass(el, leaveFromClass)
     removeTransitionClass(el, leaveToClass)
     removeTransitionClass(el, leaveActiveClass)
@@ -223,8 +225,8 @@ export function resolveTransitionProps(
     },
     onEnter: makeEnterHook(false),
     onAppear: makeEnterHook(true),
-    onLeave(el, done) {
-      isLeaving = true
+    onLeave(el: Element & { _isLeaving?: boolean }, done) {
+      el._isLeaving = true
       const resolve = () => finishLeave(el, done)
       addTransitionClass(el, leaveFromClass)
       if (__COMPAT__ && legacyClassEnabled) {
@@ -234,7 +236,7 @@ export function resolveTransitionProps(
       forceReflow()
       addTransitionClass(el, leaveActiveClass)
       nextFrame(() => {
-        if (!isLeaving) {
+        if (!el._isLeaving) {
           // cancelled
           return
         }