You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte组件开发:如何为{#each}块传递Props并复用传参

解决Svelte组件Prop在{#each}中正确使用的问题

你的代码核心问题出在{#each}块的写法上——你用{array}把传入的数组包装成了一个对象,导致遍历的是对象的键值对而非数组元素。以下是修正后的完整实现:

修正后的Assignment组件

<script>
    // 接收父组件传入的数组Prop,设置默认值避免空值报错
    export let array = [];
</script>

<div class="flex-column">
    <div class="row-item">
        <h4>Open</h4>
        <!-- 直接使用array变量,无需额外大括号;添加key提升渲染性能 -->
        {#each array as value (value.id)}
            <div class="description">
                <p>{value.status}</p>
                <p>{value.name}</p>
            </div>
        {:else}
            <!-- 可选:数组为空时的提示 -->
            <p>No assignments</p>
        {/each}
    </div>
</div>

父组件调用(无需修改)

你的父组件调用写法是正确的,Svelte的{myArray}是array={myArray}的简写,能正确将数组传递给子组件:

<div class="flex-container">
    <Assignment {myArray} />
    <Assignment {myArray2} />
</div>

关键说明

  • {#each}的语法是{#each 数组变量 as 元素 [, 索引] (key)},直接使用定义好的array变量即可,不要用大括号包裹。
  • 添加(value.id)是为了给每个遍历项指定唯一key,让Svelte在数组变化时更高效地更新DOM;如果没有id字段,也可以用其他唯一标识(不推荐用索引,因为索引会随数组元素位置变化而改变)。
  • 给array设置默认值[],可以避免父组件未传参或传参为undefined时出现遍历错误。

内容的提问来源于stack exchange,提问作者Malthe22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:50:45