Evan You 10 лет назад
Родитель
Сommit
f200e809c0
1 измененных файлов с 15 добавлено и 7 удалено
  1. 15 7
      src/runtime/dom-backend/modules/transition.js

+ 15 - 7
src/runtime/dom-backend/modules/transition.js

@@ -67,13 +67,20 @@ function onLeave (vnode, rm) {
     data = detectAuto(data)
     // apply leave classes
     const leaveClass = data.leaveClass
-    if (leaveClass) {
-      // do it in next frame to be consistent
-      // with enter transition
-      nextFrame(() => {
+    const leaveActiveClass = data.leaveActiveClass
+    if (leaveClass || leaveActiveClass) {
+      if (leaveClass) {
         addTransitionClass(el, leaveClass)
-        whenTransitionEnds(el, rm)
-      })
+        nextFrame(() => {
+          removeTransitionClass(el, leaveClass)
+        })
+      }
+      if (leaveActiveClass) {
+        nextFrame(() => {
+          addTransitionClass(el, leaveActiveClass)
+          whenTransitionEnds(el, rm)
+        })
+      }
     } else {
       rm()
     }
@@ -93,7 +100,8 @@ const autoCssTransition = cached(name => {
   return {
     enterClass: `${name}-enter`,
     leaveClass: `${name}-leave`,
-    enterActiveClass: `${name}-enter-active`
+    enterActiveClass: `${name}-enter-active`,
+    leaveActiveClass: `${name}-leave-active`
   }
 })