Просмотр исходного кода

fix(transition): fix cancel leave regression (#5974)

fix #5973
edison 3 лет назад
Родитель
Сommit
dddbd96dfe
1 измененных файлов с 8 добавлено и 6 удалено
  1. 8 6
      packages/runtime-dom/src/components/Transition.ts

+ 8 - 6
packages/runtime-dom/src/components/Transition.ts

@@ -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
         }