Svelte 3 - 如何循环每个块 X 次

Posted

技术标签:

【中文标题】Svelte 3 - 如何循环每个块 X 次【英文标题】:Svelte 3 - How to loop each block X amount of times 【发布时间】:2020-02-01 10:41:31 【问题描述】:

我希望找到一种方法在 Svelte 3 中迭代 #each 块一定次数。在 Vue 中我会做这样的事情:

<li v-for="i in 3"><!-- somecontent --></li>

但据我了解,Svelte 使用 #eached 数组的 .length 属性处理循环的方式大不相同。有什么方法可以在 Svelte 中实现这样的效果吗?

#each 3 as i
  <li><!-- somecontent --></li>
/if

【问题讨论】:

【参考方案1】:

你可以使用#each ...,比如:

#each Array(3) as _, i
    <li>i + 1</li>
/each

【讨论】:

有没有办法让这个 #each 块在数字变量发生变化时重新渲染(例如从 3 到 5?)。我想根据以前的用户输入呈现一定数量的表单项。例:你有多少辆车? --> 例如,为每个汽车品牌/型号创建的文本输入数。 @Doomd:是的,看一个例子:svelte.dev/repl/fef2db8c70064c49913a6608ebf633b9?version=3.18.2 如果您要这样做 - 请键入 @doomd 以便 Svelte 可以跟踪添加/删除:#each x as _, i (x.id) 或类似的。 【参考方案2】:

#each 标签可以循环任何带有长度属性的东西,所以:

#each length: 3 as _, i
    <li>i + 1</li>
/each

如果您愿意,也可以使用。

【讨论】:

这个答案更适合我的需要,因为对于长时间的迭代,我认为最好不要创建一个 looooong 数组。【参考方案3】:

我在 Svelte 从 ab 的旅行中使用这种方式

#each Array.from(Array(b+1).keys()).slice(a) as i 
    <h1>i</h1>                    
/each

示例(1 到 100):

#each Array.from(Array(100+1).keys()).slice(1) as i 
    <h1>i</h1>                    
/each

【讨论】:

非常酷,但对 1-X 没有那么有用,因为您可以使用其他更简单的方法之一。但这有一些有趣的分页可能性svelte.dev/repl/509ac9d542644544a282966aef6879e1?version=3.44.3

以上是关于Svelte 3 - 如何循环每个块 X 次的主要内容,如果未能解决你的问题,请参考以下文章

在通过 Svelte 每个块迭代对象时查找值

如何专注于 Svelte 中新增的输入?

在带有 Svelte 的每个块中使用定义的变量

你如何安排一个块在下一次运行循环迭代中运行?

如何循环遍历一个 Div 元素块 N 次?

在 OpenMP 中,我们如何并行运行多个代码块,其中每个代码块包含 omp single 和 omp for 循环?