]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: save
authordaiwei <daiwei521@126.com>
Wed, 15 Jan 2025 03:07:23 +0000 (11:07 +0800)
committerdaiwei <daiwei521@126.com>
Wed, 15 Jan 2025 03:07:23 +0000 (11:07 +0800)
packages/compiler-core/__tests__/transforms/__snapshots__/vMemo.spec.ts.snap
packages/compiler-core/src/transforms/vFor.ts
packages/runtime-core/src/helpers/renderList.ts

index b561bde6dd89317f277211d2684310236b17a9e7..8b536c50b976bad9bc4c8e868ecce06025c42cf8 100644 (file)
@@ -5,14 +5,14 @@ exports[`compiler: v-memo transform > element v-for key expression prefixing + v
 
 export function render(_ctx, _cache) {
   return (_openBlock(), _createElementBlock("div", null, [
-    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tableData, (data, _key, ___, _cached) => {
+    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tableData, (data, __, _i, _cached) => {
       const _memo = (_ctx.getLetter(data))
       if (_cached && _cached.el && _cached.key === _ctx.getId(data) && _isMemoSame(_cached, _memo)) return _cached
       const _item = (_openBlock(), _createElementBlock("span", {
         key: _ctx.getId(data)
       }))
       _item.memo = _memo
-      _item.cacheIndex = [0, _key]
+      _item.cacheIndex = [0, _i]
       return _item
     }, _cache, 0), 128 /* KEYED_FRAGMENT */))
   ]))
@@ -54,12 +54,12 @@ exports[`compiler: v-memo transform > on template v-for 1`] = `
 
 export function render(_ctx, _cache) {
   return (_openBlock(), _createElementBlock("div", null, [
-    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.list, ({ x, y }, _key, ___, _cached) => {
+    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.list, ({ x, y }, __, _i, _cached) => {
       const _memo = ([x, y === _ctx.z])
       if (_cached && _cached.el && _cached.key === x && _isMemoSame(_cached, _memo)) return _cached
       const _item = (_openBlock(), _createElementBlock("span", { key: x }, "foobar"))
       _item.memo = _memo
-      _item.cacheIndex = [0, _key]
+      _item.cacheIndex = [0, _i]
       return _item
     }, _cache, 0), 128 /* KEYED_FRAGMENT */))
   ]))
@@ -71,14 +71,14 @@ exports[`compiler: v-memo transform > on v-for 1`] = `
 
 export function render(_ctx, _cache) {
   return (_openBlock(), _createElementBlock("div", null, [
-    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.list, ({ x, y }, _key, ___, _cached) => {
+    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.list, ({ x, y }, __, _i, _cached) => {
       const _memo = ([x, y === _ctx.z])
       if (_cached && _cached.el && _cached.key === x && _isMemoSame(_cached, _memo)) return _cached
       const _item = (_openBlock(), _createElementBlock("div", { key: x }, [
         _createElementVNode("span", null, "foobar")
       ]))
       _item.memo = _memo
-      _item.cacheIndex = [0, _key]
+      _item.cacheIndex = [0, _i]
       return _item
     }, _cache, 0), 128 /* KEYED_FRAGMENT */))
   ]))
index 872965d5ac30788ca46f2afc73ceb056bbe5eb93..664909443a52500dd087f1cc5f6d9b78bd02359c 100644 (file)
@@ -218,7 +218,7 @@ export const transformFor: NodeTransform = createStructuralDirectiveTransform(
         }
 
         if (memo) {
-          forNode.parseResult.key = createSimpleExpression('_key')
+          forNode.parseResult.index = createSimpleExpression('_i')
           const loop = createFunctionExpression(
             createForLoopParams(forNode.parseResult, [
               createSimpleExpression(`_cached`),
@@ -236,7 +236,7 @@ export const transformFor: NodeTransform = createStructuralDirectiveTransform(
             createCompoundExpression([`const _item = `, childBlock as any]),
             createSimpleExpression(`_item.memo = _memo`),
             createSimpleExpression(
-              `_item.cacheIndex = [${context.cached.length}, _key]`,
+              `_item.cacheIndex = [${context.cached.length}, _i]`,
             ),
             createSimpleExpression(`return _item`),
           ])
index bbcbcc13044330fed58c776f684ece2ff837c0b5..3b4a8c2fa40bc46ede2ccb043c6913c82ed085c9 100644 (file)
@@ -78,7 +78,7 @@ export function renderList(
       ret[i] = renderItem(
         needsWrap ? toReactive(source[i]) : source[i],
         i,
-        undefined,
+        i,
         cached && cached[i],
       )
     }
@@ -88,12 +88,12 @@ export function renderList(
     }
     ret = new Array(source)
     for (let i = 0; i < source; i++) {
-      ret[i] = renderItem(i + 1, i, undefined, cached && cached[i])
+      ret[i] = renderItem(i + 1, i, i, cached && cached[i])
     }
   } else if (isObject(source)) {
     if (source[Symbol.iterator as any]) {
       ret = Array.from(source as Iterable<any>, (item, i) =>
-        renderItem(item, i, undefined, cached && cached[i]),
+        renderItem(item, i, i, cached && cached[i]),
       )
     } else {
       const keys = Object.keys(source)