我不明白教程中的这一部分: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.id1--4 的颜色仍然存在。
这是一个正确的理解吗?each假设块是可交换的,这是默认行为吗?
然后它说使用thing.id作为each块的密钥将解决问题,即{#each things as thing (thing.id)}. 我不明白这些键是如何在each块中使用的,如果thing.id没有提供默认键是什么。以及为什么默认密钥(如果有一个,或者默认的无密钥)在提供时thing.id不起作用。
感谢您的澄清。
暮色呼如
慕虎7371278
jeck猫
守着一只汪
相关分类