From 8e64765382bb4adf156a194b4692f9008773d838 Mon Sep 17 00:00:00 2001 From: Doctorwu Date: Tue, 14 May 2024 12:01:07 +0800 Subject: [PATCH] fix(compiler-core): fix for :key shorthand patchflag close #10882 --- .../compiler-core/__tests__/transforms/vFor.spec.ts | 11 ++++++++++- packages/compiler-core/src/transforms/vFor.ts | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index 7fabcbb579c..e771a9ebe04 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -18,7 +18,7 @@ import { import { ErrorCodes } from '../../src/errors' import { type CompilerOptions, generate } from '../../src' import { FRAGMENT, RENDER_LIST, RENDER_SLOT } from '../../src/runtimeHelpers' -import { PatchFlags } from '@vue/shared' +import { PatchFlagNames, PatchFlags } from '@vue/shared' import { createObjectMatcher, genFlagText } from '../testUtils' export function parseWithForTransform( @@ -658,6 +658,15 @@ describe('compiler: v-for', () => { }), }) }) + + test('template v-for key w/ :key shorthand', () => { + const { + node: { codegenNode }, + } = parseWithForTransform('
test
') + expect(codegenNode.patchFlag).toBe( + `${PatchFlags.KEYED_FRAGMENT} /* ${PatchFlagNames[PatchFlags.KEYED_FRAGMENT]} */`, + ) + }) }) describe('codegen', () => { diff --git a/packages/compiler-core/src/transforms/vFor.ts b/packages/compiler-core/src/transforms/vFor.ts index 5d423ee2429..c8b69b10142 100644 --- a/packages/compiler-core/src/transforms/vFor.ts +++ b/packages/compiler-core/src/transforms/vFor.ts @@ -60,7 +60,8 @@ export const transformFor = createStructuralDirectiveTransform( ]) as ForRenderListExpression const isTemplate = isTemplateNode(node) const memo = findDir(node, 'memo') - const keyProp = findProp(node, `key`) + // allowEmpty for check shorthand + const keyProp = findProp(node, `key`, false, true) const keyExp = keyProp && (keyProp.type === NodeTypes.ATTRIBUTE