|
|
@@ -530,6 +530,7 @@ function createSuspenseBoundary(
|
|
|
effects,
|
|
|
parentComponent,
|
|
|
container,
|
|
|
+ isInFallback,
|
|
|
} = suspense
|
|
|
|
|
|
// if there's a transition happening we need to wait it to finish.
|
|
|
@@ -551,6 +552,10 @@ function createSuspenseBoundary(
|
|
|
MoveType.ENTER,
|
|
|
)
|
|
|
queuePostFlushCb(effects)
|
|
|
+ // clear el reference from fallback vnode to allow GC after transition
|
|
|
+ if (isInFallback && vnode.ssFallback) {
|
|
|
+ vnode.ssFallback.el = null
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -570,6 +575,11 @@ function createSuspenseBoundary(
|
|
|
anchor = next(activeBranch)
|
|
|
}
|
|
|
unmount(activeBranch, parentComponent, suspense, true)
|
|
|
+ // clear el reference from fallback vnode to allow GC
|
|
|
+ // only clear immediately if there's no delayed transition
|
|
|
+ if (!delayEnter && isInFallback && vnode.ssFallback) {
|
|
|
+ vnode.ssFallback.el = null
|
|
|
+ }
|
|
|
}
|
|
|
if (!delayEnter) {
|
|
|
// move content from off-dom container to actual container
|
|
|
@@ -728,6 +738,8 @@ function createSuspenseBoundary(
|
|
|
optimized,
|
|
|
)
|
|
|
if (placeholder) {
|
|
|
+ // clean up placeholder reference
|
|
|
+ vnode.placeholder = null
|
|
|
remove(placeholder)
|
|
|
}
|
|
|
updateHOCHostEl(instance, vnode.el)
|