@@ -198,8 +198,7 @@ const BaseTransitionImpl: ComponentOptions = {
198198 setTransitionHooks ( innerChild , enterHooks )
199199 }
200200
201- const oldChild = instance . subTree
202- const oldInnerChild = oldChild && getInnerChild ( oldChild )
201+ let oldInnerChild = instance . subTree && getInnerChild ( instance . subTree )
203202
204203 // handle mode
205204 if (
@@ -208,7 +207,7 @@ const BaseTransitionImpl: ComponentOptions = {
208207 ! isSameVNodeType ( innerChild , oldInnerChild ) &&
209208 recursiveGetSubtree ( instance ) . type !== Comment
210209 ) {
211- const leavingHooks = resolveTransitionHooks (
210+ let leavingHooks = resolveTransitionHooks (
212211 oldInnerChild ,
213212 rawProps ,
214213 state ,
@@ -228,6 +227,7 @@ const BaseTransitionImpl: ComponentOptions = {
228227 instance . update ( )
229228 }
230229 delete leavingHooks . afterLeave
230+ oldInnerChild = undefined
231231 }
232232 return emptyPlaceholder ( child )
233233 } else if ( mode === 'in-out' && innerChild . type !== Comment ) {
@@ -238,18 +238,27 @@ const BaseTransitionImpl: ComponentOptions = {
238238 ) => {
239239 const leavingVNodesCache = getLeavingNodesForType (
240240 state ,
241- oldInnerChild ,
241+ oldInnerChild ! ,
242242 )
243- leavingVNodesCache [ String ( oldInnerChild . key ) ] = oldInnerChild
243+ leavingVNodesCache [ String ( oldInnerChild ! . key ) ] = oldInnerChild !
244244 // early removal callback
245245 el [ leaveCbKey ] = ( ) => {
246246 earlyRemove ( )
247247 el [ leaveCbKey ] = undefined
248248 delete enterHooks . delayedLeave
249+ oldInnerChild = undefined
250+ }
251+ enterHooks . delayedLeave = ( ) => {
252+ delayedLeave ( )
253+ delete enterHooks . delayedLeave
254+ oldInnerChild = undefined
249255 }
250- enterHooks . delayedLeave = delayedLeave
251256 }
257+ } else {
258+ oldInnerChild = undefined
252259 }
260+ } else if ( oldInnerChild ) {
261+ oldInnerChild = undefined
253262 }
254263
255264 return child
0 commit comments