【发布时间】:2020-10-11 10:10:16
【问题描述】:
教程中的这部分我没看懂: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 时默认密钥(如果有,或者默认无密钥)不起作用。
感谢您的澄清。
【问题讨论】:
标签: javascript each svelte svelte-3