我不明白教程中的这一部分:https ://svelte.dev/tutorial/keyed-each-blocks 。
我可以看到things
数组已正确更新,因此正确thing.color
传递了预期。但是通过第一句“默认情况下,当你修改一个each
块的值时,它会在块的末尾添加和删除项目,并更新任何已更改的值。”,似乎是说 Svelte 无论如何都会删除单击按钮时的最后一个块,则其余 4 个块将面向切片things
,即
[{ id: 2, color: '#6a00a8' }, { id: 3, color: '#b12a90' }, { id: 4, color: '#e16462' }, { id: 5, color: '#fca636' }]
并且由于initial
被声明为const
,它不能再被更新,所以thing.id
1--4 的颜色仍然存在。
这是一个正确的理解吗?each
假设块是可交换的,这是默认行为吗?
然后它说使用thing.id
作为each
块的密钥将解决问题,即{#each things as thing (thing.id)}
. 我不明白这些键是如何在each
块中使用的,如果thing.id
没有提供默认键是什么。以及为什么默认密钥(如果有一个,或者默认的无密钥)在提供时thing.id
不起作用。
感谢您的澄清。
暮色呼如
慕虎7371278
jeck猫
守着一只汪
相关分类