Skip to content

Commit 53af138

Browse files
fix: read index as a source in legacy keyed each block (#14208)
Fixes #14203
1 parent ea0d80e commit 53af138

File tree

5 files changed

+31
-2
lines changed

5 files changed

+31
-2
lines changed

.changeset/late-dodos-film.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: read index as a source in legacy keyed each block

packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export function EachBlock(node, context) {
196196
// forbidden in runes mode
197197
return b.member(
198198
each_node_meta.array_name ? b.call(each_node_meta.array_name) : collection,
199-
index,
199+
(flags & EACH_INDEX_REACTIVE) !== 0 ? get_value(index) : index,
200200
true
201201
);
202202
}
@@ -208,7 +208,7 @@ export function EachBlock(node, context) {
208208

209209
const left = b.member(
210210
each_node_meta.array_name ? b.call(each_node_meta.array_name) : collection,
211-
index,
211+
(flags & EACH_INDEX_REACTIVE) !== 0 ? get_value(index) : index,
212212
true
213213
);
214214

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
export let item;
3+
console.log(item);
4+
item = 1;
5+
</script>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
async test({ assert, target, logs }) {
5+
const p = target.querySelector('p');
6+
assert.equal(p?.innerHTML, '1');
7+
assert.deepEqual(logs, [0]);
8+
}
9+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script>
2+
import Component from './Component.svelte';
3+
const items = [0];
4+
</script>
5+
6+
{#each items as item, idx(item)}
7+
<Component bind:item />
8+
{/each}
9+
10+
<p>{items}</p>

0 commit comments

Comments
 (0)