我通过迭代序列在 UI 上呈现了一系列项目。在 UI 上,每个项目都填充到这样的表单中:
<.div(
state.employees.zipWithIndex.map{ employee =>
<.form(
<.label("Name of the employee:",
<.input(^.`type` := "text", ^.cls := "form-control",
^.value := employee.name, onChange ==> updateEmployeeName)),
<.br,
<.label("Addresses:",
<.input(^.`type` := "textarea", ^.rows := 100, ^.cols := 20,^.cls := "form-control",
^.value := employee.addresses.mkString(",")))
)
}.toVdomArray
)
def updateEmployeeName(event: ReactEventFromInput): Callback = {
val updatedName = event.target.value
$.modState(...update the individual item here)
}
所以现在我可以访问单个项目及其索引。现在我的想法是用户可以修改字段,这将触发一些功能(例如,onChange ==> updateEmployeeName),然后我在单个项目级别更新反应组件的状态。
但似乎不可能,因为我无法将索引传递给 updateEmployeeName,因此我无法在 updateEmployeeName 中检测到列表中的哪个项目被修改。
有什么办法解决吗?