@@ -198,8 +198,7 @@ const BaseTransitionImpl: ComponentOptions = {
198
198
setTransitionHooks ( innerChild , enterHooks )
199
199
}
200
200
201
- const oldChild = instance . subTree
202
- const oldInnerChild = oldChild && getInnerChild ( oldChild )
201
+ let oldInnerChild = instance . subTree && getInnerChild ( instance . subTree )
203
202
204
203
// handle mode
205
204
if (
@@ -208,7 +207,7 @@ const BaseTransitionImpl: ComponentOptions = {
208
207
! isSameVNodeType ( innerChild , oldInnerChild ) &&
209
208
recursiveGetSubtree ( instance ) . type !== Comment
210
209
) {
211
- const leavingHooks = resolveTransitionHooks (
210
+ let leavingHooks = resolveTransitionHooks (
212
211
oldInnerChild ,
213
212
rawProps ,
214
213
state ,
@@ -228,6 +227,7 @@ const BaseTransitionImpl: ComponentOptions = {
228
227
instance . update ( )
229
228
}
230
229
delete leavingHooks . afterLeave
230
+ oldInnerChild = undefined
231
231
}
232
232
return emptyPlaceholder ( child )
233
233
} else if ( mode === 'in-out' && innerChild . type !== Comment ) {
@@ -238,18 +238,27 @@ const BaseTransitionImpl: ComponentOptions = {
238
238
) => {
239
239
const leavingVNodesCache = getLeavingNodesForType (
240
240
state ,
241
- oldInnerChild ,
241
+ oldInnerChild ! ,
242
242
)
243
- leavingVNodesCache [ String ( oldInnerChild . key ) ] = oldInnerChild
243
+ leavingVNodesCache [ String ( oldInnerChild ! . key ) ] = oldInnerChild !
244
244
// early removal callback
245
245
el [ leaveCbKey ] = ( ) => {
246
246
earlyRemove ( )
247
247
el [ leaveCbKey ] = undefined
248
248
delete enterHooks . delayedLeave
249
+ oldInnerChild = undefined
250
+ }
251
+ enterHooks . delayedLeave = ( ) => {
252
+ delayedLeave ( )
253
+ delete enterHooks . delayedLeave
254
+ oldInnerChild = undefined
249
255
}
250
- enterHooks . delayedLeave = delayedLeave
251
256
}
257
+ } else {
258
+ oldInnerChild = undefined
252
259
}
260
+ } else if ( oldInnerChild ) {
261
+ oldInnerChild = undefined
253
262
}
254
263
255
264
return child
0 commit comments