fix(runtime-core): avoid unmount teleport's children multiple times (#3499)

fix #3497
This commit is contained in:
HcySunYang
2021-03-30 03:15:08 +08:00
committed by GitHub
parent 117a61bc17
commit 3736496006
2 changed files with 51 additions and 13 deletions

View File

@@ -2096,7 +2096,16 @@ function baseCreateRenderer(
invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount')
}
if (
if (shapeFlag & ShapeFlags.TELEPORT) {
;(vnode.type as typeof TeleportImpl).remove(
vnode,
parentComponent,
parentSuspense,
optimized,
internals,
doRemove
)
} else if (
dynamicChildren &&
// #1153: fast path should not be taken for non-stable (v-for) fragments
(type !== Fragment ||
@@ -2119,17 +2128,6 @@ function baseCreateRenderer(
unmountChildren(children as VNode[], parentComponent, parentSuspense)
}
if (shapeFlag & ShapeFlags.TELEPORT) {
;(vnode.type as typeof TeleportImpl).remove(
vnode,
parentComponent,
parentSuspense,
optimized,
internals,
doRemove
)
}
if (doRemove) {
remove(vnode)
}