diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap index 267445b40..1bb57f3de 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap @@ -169,23 +169,6 @@ return function render() { }" `; -exports[`compiler: hoistStatic transform prefixIdentifiers hoist element with static ref 1`] = ` -"const _Vue = Vue -const _createVNode = Vue.createVNode - -const _hoisted_1 = _createVNode(\\"span\\", { ref: \\"o\\" }) - -return function render() { - with (this) { - const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue - - return (_openBlock(), _createBlock(\\"div\\", null, [ - _hoisted_1 - ])) - } -}" -`; - exports[`compiler: hoistStatic transform prefixIdentifiers hoist nested static tree with static interpolation 1`] = ` "const _Vue = Vue const _createVNode = Vue.createVNode diff --git a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts index 719aee704..1fb81f931 100644 --- a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts +++ b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts @@ -677,42 +677,5 @@ describe('compiler: hoistStatic transform', () => { }).code ).toMatchSnapshot() }) - - test('hoist element with static ref', () => { - const { root, args } = transformWithHoist( - `
`, - { - prefixIdentifiers: true - } - ) - - expect(root.hoists.length).toBe(1) - expect(root.hoists).toMatchObject([ - { - type: NodeTypes.JS_CALL_EXPRESSION, - callee: CREATE_VNODE, - arguments: [ - `"span"`, - createObjectMatcher({ - ref: `o` - }) - ] - } - ]) - expect(args).toMatchObject([ - `"div"`, - `null`, - [ - { - type: NodeTypes.ELEMENT, - codegenNode: { - type: NodeTypes.SIMPLE_EXPRESSION, - content: `_hoisted_1` - } - } - ] - ]) - expect(generate(root).code).toMatchSnapshot() - }) }) }) diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts index b8ef7543b..74b2cc878 100644 --- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts @@ -699,15 +699,10 @@ describe('compiler: element transform', () => { expect(node.arguments[3]).toBe(genFlagText(PatchFlags.FULL_PROPS)) }) - test('NO NEED_PATCH (static ref)', () => { + test('NEED_PATCH (static ref)', () => { const { node } = parseWithBind(`
`) - expect(node.arguments.length).toBe(2) - expect(node.arguments).toMatchObject([ - `"div"`, - createObjectMatcher({ - ref: `foo` - }) - ]) + expect(node.arguments.length).toBe(4) + expect(node.arguments[3]).toBe(genFlagText(PatchFlags.NEED_PATCH)) }) test('NEED_PATCH (dynamic ref)', () => { diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 99f1c6752..646a51ce6 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -249,6 +249,9 @@ export function buildProps( const prop = props[i] if (prop.type === NodeTypes.ATTRIBUTE) { const { loc, name, value } = prop + if (name === 'ref') { + hasRef = true + } properties.push( createObjectProperty( createSimpleExpression(