fix(runtime-core): should not take unmount children fast path for v-for fragments
fix #1153
This commit is contained in:
parent
697de07e63
commit
5b8883a846
@ -1725,7 +1725,16 @@ function baseCreateRenderer(
|
||||
parentSuspense,
|
||||
doRemove = false
|
||||
) => {
|
||||
const { props, ref, children, dynamicChildren, shapeFlag, dirs } = vnode
|
||||
const {
|
||||
type,
|
||||
props,
|
||||
ref,
|
||||
children,
|
||||
dynamicChildren,
|
||||
shapeFlag,
|
||||
patchFlag,
|
||||
dirs
|
||||
} = vnode
|
||||
const shouldInvokeDirs = shapeFlag & ShapeFlags.ELEMENT && dirs
|
||||
const shouldKeepAlive = shapeFlag & ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
|
||||
let vnodeHook: VNodeHook | undefined | null
|
||||
@ -1755,7 +1764,12 @@ function baseCreateRenderer(
|
||||
invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount')
|
||||
}
|
||||
|
||||
if (dynamicChildren) {
|
||||
if (
|
||||
dynamicChildren &&
|
||||
// #1153: fast path should not be taken for non-stable (v-for) fragments
|
||||
(type !== Fragment ||
|
||||
(patchFlag > 0 && patchFlag & PatchFlags.STABLE_FRAGMENT))
|
||||
) {
|
||||
// fast path for block nodes: only need to unmount dynamic children.
|
||||
unmountChildren(dynamicChildren, parentComponent, parentSuspense)
|
||||
} else if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user