|
@@ -603,11 +603,16 @@ export function normalizeVNode(child: VNodeChild): VNode {
|
|
|
return createVNode(Comment)
|
|
return createVNode(Comment)
|
|
|
} else if (isArray(child)) {
|
|
} else if (isArray(child)) {
|
|
|
// fragment
|
|
// fragment
|
|
|
- return createVNode(Fragment, null, child)
|
|
|
|
|
|
|
+ return createVNode(
|
|
|
|
|
+ Fragment,
|
|
|
|
|
+ null,
|
|
|
|
|
+ // #3666, avoid reference pollution when reusing vnode
|
|
|
|
|
+ child.slice()
|
|
|
|
|
+ )
|
|
|
} else if (typeof child === 'object') {
|
|
} else if (typeof child === 'object') {
|
|
|
// already vnode, this should be the most common since compiled templates
|
|
// already vnode, this should be the most common since compiled templates
|
|
|
// always produce all-vnode children arrays
|
|
// always produce all-vnode children arrays
|
|
|
- return child.el === null ? child : cloneVNode(child)
|
|
|
|
|
|
|
+ return cloneIfMounted(child)
|
|
|
} else {
|
|
} else {
|
|
|
// strings and numbers
|
|
// strings and numbers
|
|
|
return createVNode(Text, null, String(child))
|
|
return createVNode(Text, null, String(child))
|