Arrays 将每个循环嵌套在Svelte中的数组上-如何设置唯一的id/键?
我想用下面的形式呈现一个数组,每个数组有两个嵌套的循环Arrays 将每个循环嵌套在Svelte中的数组上-如何设置唯一的id/键?,arrays,foreach,each,svelte,svelte-3,Arrays,Foreach,Each,Svelte,Svelte 3,我想用下面的形式呈现一个数组,每个数组有两个嵌套的循环 const arr = [ [ a, b, c ], [ d, e, f ], [ g, h, i ] ] {#each arr as row, rowIndex} <div class="row"> {#each row as cell, cellIndex ($arr[rowIndex][cellIndex]) } <div
const arr = [
[ a, b, c ],
[ d, e, f ],
[ g, h, i ]
]
{#each arr as row, rowIndex}
<div class="row">
{#each row as cell, cellIndex ($arr[rowIndex][cellIndex]) }
<div class="cell"> {cell} </div>
{/each}
</div>
{/each}
为什么不使用
cellIndex
作为内部#each
中的键,而不是$arr[rowIndex][cellIndex]
?这是因为密钥只需要在一个特定的#每个
中是唯一的,而每个嵌套的#每个
最终都是唯一的。你的意思是这样吗{#每行作为单元格,cellIndex(cellIndex)}
也没有预期效果-请参见此REPL->单击的元素应消失,然后右侧的元素应向左移动。就像在第一个版本中实现的一样(仅使用唯一的单元格内容)->您可以将每个单元格的id添加到arr
,无论移除后的位置如何。因此id可以是其行中的初始单元格索引。然后,这些单元格可能是像{color:#FFFFFF',index:0}
这样的对象。然后,您可以使用此索引属性作为键。如果“object arr”的创建可以通过包含id内容对象的派生存储完成,但仍然不能达到预期效果->(我假设这是因为derivedArr已呈现,但删除发生在“basic”arr上),则可能是一种解决方案。我最初也想到了派生,但它不能工作。但是您可以将索引添加到原始项中。是的,当修改原始项(或原始数组的“未链接”副本)时,它可以工作,但这并不能真正解决问题,因为不再与原始数组连接,并且反应性也会丢失
rowIndex.toString().concat(cellIndex.toString())
""+rowIndex+cellIndex
+(""+rowIndex+cellIndex)
$arr[rowIndex][cellIndex]+rowIndex+cellIndex