You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte点击器应用:解决keyed each重复键报错问题

解决Svelte Keyed Each重复Key的问题

你的问题根源在于keyed each要求每个key必须唯一——当计数到11时,数组变成[1,1],两个元素的key都是1,违反了Svelte的key唯一性约束,导致报错。

最优解决方案:使用索引作为key

因为你的数字列表是按固定位置存储每一位数字(比如个位、十位、百位依次排列),每个位置的索引是唯一且固定的,直接用索引作为key就能完美解决重复问题,同时保持代码的简洁性:

{#each numbers as number, index (index)}
    <h1 class="score-text">{number}</h1>
{/each}

为什么这个方案可行?

  • Svelte通过key来跟踪列表中每个元素的状态和位置,索引index在数组中是唯一的,不会出现重复值;
  • 你的场景中,数组的元素顺序不会发生变化(只是每个位置的数字更新),用索引作为key不会引发额外的渲染问题(如果是动态排序的列表,索引key可能有副作用,但这里完全适用)。

替代方案(可选)

如果担心索引key的局限性(比如未来可能调整列表顺序),也可以给每个元素生成结合索引和数字的唯一key,比如:

{#each numbers as number, index (`${index}-${number}`)}
    <h1 class="score-text">{number}</h1>
{/each}

不过对于你的点击器场景,索引key已经足够简单高效,没必要额外复杂化。

内容的提问来源于stack exchange,提问作者SuperSIlly2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:53:20