]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(compiler-vapor): add index test for v-for (#13004)
authorzhiyuanzmj <260480378@qq.com>
Thu, 15 May 2025 06:43:02 +0000 (14:43 +0800)
committerGitHub <noreply@github.com>
Thu, 15 May 2025 06:43:02 +0000 (14:43 +0800)
packages/compiler-vapor/__tests__/transforms/__snapshots__/vFor.spec.ts.snap
packages/compiler-vapor/__tests__/transforms/vFor.spec.ts

index cb14f56afdbfd800e900c7388716ef2691b171be..e3631f158905bd5044d62611eee3f1a92e7981d7 100644 (file)
@@ -115,6 +115,21 @@ export function render(_ctx) {
 }"
 `;
 
+exports[`compiler: v-for > object value, key and index 1`] = `
+"import { child as _child, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, createFor as _createFor, template as _template } from 'vue';
+const t0 = _template("<div> </div>", true)
+
+export function render(_ctx) {
+  const n0 = _createFor(() => (_ctx.list), (_for_item0, _for_key0, _for_index0) => {
+    const n2 = t0()
+    const x2 = _child(n2)
+    _renderEffect(() => _setText(x2, _toDisplayString(_for_item0.value + _for_key0.value + _for_index0.value)))
+    return n2
+  }, (value, key, index) => (key))
+  return n0
+}"
+`;
+
 exports[`compiler: v-for > v-for aliases w/ complex expressions 1`] = `
 "import { getDefaultValue as _getDefaultValue, child as _child, toDisplayString as _toDisplayString, setText as _setText, renderEffect as _renderEffect, createFor as _createFor, template as _template } from 'vue';
 const t0 = _template("<div> </div>", true)
index 0008df7f4c77729e48cd48ee372dd630b7dde93e..47a110fdba3f151c4919f39fefa42ed03eb96178 100644 (file)
@@ -119,6 +119,32 @@ describe('compiler: v-for', () => {
     })
   })
 
+  test('object value, key and index', () => {
+    const { code, ir } = compileWithVFor(
+      `<div v-for="(value, key, index) in list" :key="key">{{ value + key + index }}</div>`,
+    )
+    expect(code).matchSnapshot()
+    expect(ir.block.operation[0]).toMatchObject({
+      type: IRNodeTypes.FOR,
+      source: {
+        type: NodeTypes.SIMPLE_EXPRESSION,
+        content: 'list',
+      },
+      value: {
+        type: NodeTypes.SIMPLE_EXPRESSION,
+        content: 'value',
+      },
+      key: {
+        type: NodeTypes.SIMPLE_EXPRESSION,
+        content: 'key',
+      },
+      index: {
+        type: NodeTypes.SIMPLE_EXPRESSION,
+        content: 'index',
+      },
+    })
+  })
+
   test('object de-structured value', () => {
     const { code, ir } = compileWithVFor(
       '<span v-for="({ id, value }) in items" :key="id">{{ id }}{{ value }}</span>',