diff --git a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
index 2c4421aeb3b..eec5a76d363 100644
--- a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
@@ -13,7 +13,6 @@ import {
import {
FRAGMENT,
RENDER_LIST,
- CREATE_TEXT,
NORMALIZE_CLASS
} from '../../src/runtimeHelpers'
import { transformElement } from '../../src/transforms/transformElement'
@@ -378,36 +377,6 @@ describe('compiler: hoistStatic transform', () => {
expect(generate(root).code).toMatchSnapshot()
})
- test('hoist static text node between elements', () => {
- const root = transformWithHoist(`
`)
- expect(root.hoists).toMatchObject([
- {
- callee: CREATE_TEXT,
- arguments: [
- {
- type: NodeTypes.TEXT,
- content: `static`
- }
- ]
- },
- {
- type: NodeTypes.VNODE_CALL,
- tag: `"div"`
- },
- {
- type: NodeTypes.JS_ARRAY_EXPRESSION,
- elements: [
- {
- type: NodeTypes.TEXT_CALL
- },
- {
- type: NodeTypes.ELEMENT
- }
- ]
- }
- ])
- })
-
describe('prefixIdentifiers', () => {
test('hoist nested static tree with static interpolation', () => {
const root = transformWithHoist(
@@ -618,7 +587,9 @@ describe('compiler: hoistStatic transform', () => {
})
test('should NOT hoist SVG with directives', () => {
- const root = transformWithHoist(``)
+ const root = transformWithHoist(
+ ``
+ )
expect(root.hoists.length).toBe(2)
expect(generate(root).code).toMatchSnapshot()
})
diff --git a/packages/compiler-core/src/transforms/hoistStatic.ts b/packages/compiler-core/src/transforms/hoistStatic.ts
index 848052581ed..b2b7f871c0a 100644
--- a/packages/compiler-core/src/transforms/hoistStatic.ts
+++ b/packages/compiler-core/src/transforms/hoistStatic.ts
@@ -97,12 +97,6 @@ function walk(
}
}
}
- } else if (
- child.type === NodeTypes.TEXT_CALL &&
- getConstantType(child.content, context) >= ConstantTypes.CAN_HOIST
- ) {
- child.codegenNode = context.hoist(child.codegenNode)
- hoistedCount++
}
// walk further
diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts
index 6a43d97d7d7..b731dc0b51f 100644
--- a/packages/runtime-core/src/vnode.ts
+++ b/packages/runtime-core/src/vnode.ts
@@ -737,7 +737,10 @@ export function normalizeVNode(child: VNodeChild): VNode {
// optimized normalization for template-compiled render fns
export function cloneIfMounted(child: VNode): VNode {
- return child.el === null || child.memo ? child : cloneVNode(child)
+ return (child.el === null && child.patchFlag !== PatchFlags.HOISTED) ||
+ child.memo
+ ? child
+ : cloneVNode(child)
}
export function normalizeChildren(vnode: VNode, children: unknown) {