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

scalajs-react中遍历Seq时如何获取对应元素的索引?

Scala.js React 遍历集合获取索引及表单绑定方案

直接获取索引的实现方式

你可以直接调用Scala集合的zipWithIndex方法,将元素和对应索引配对后遍历,修改后的代码如下:

<.div(
  employees.zipWithIndex.map { case (employee, index) =>
    <.form(
      <.label("Name of the employee:",
        <.input(^.`type` := "text", ^.cls := "form-control",
          ^.value := employee.name,
          // 索引直接传入修改回调即可定位对应员工
          ^.onChange ==> (e => handleNameChange(index, e.target.value))
        )
      ),
      <.br,
      <.label("Addresses:",
        <.input(^.`type` := "textarea", ^.rows := 100, ^.cols := 20,^.cls := "form-control",
          ^.value := employee.addresses.mkString(","),
          ^.onChange ==> (e => handleAddressChange(index, e.target.value))
        )
      )
    )
  }
)

注意:如果你的employees数组会发生增删、排序等操作,不要把索引作为React元素的key属性传入,会导致组件状态复用错误,优先用员工的唯一业务ID作为key。

更优实现推荐

  • 给Employee类添加唯一业务标识字段(比如员工ID),绑定修改回调时直接传递该ID而非索引,后续逻辑不受数组顺序变化影响,稳定性更高
  • 可以把单个员工的表单逻辑封装为独立组件,将employee实例、修改回调作为组件Props传入,父组件仅需处理修改后的数据更新,代码解耦性和可维护性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:27:03