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

使用React JS为每行动态生成checkbox并获取选中值的实现问题

解决步骤

1. 调整行数据初始结构

每行新增dependent字段,默认值为空字符串,用于存储选中的依赖项:

// 新增行逻辑修改
const addRow = () => {
  setRows([
    ...rows,
    {
      input1: '', // 第一个输入项对应字段
      input2: '', // 第二个输入项对应字段
      dependent: ''
    }
  ])
}

2. 实现checkbox选中状态同步函数

编写专门的change处理函数,操作选中值拼接到对应行的dependent字段:

const handleCheckboxChange = (rowIndex, checkValue, isChecked) => {
  const updatedRows = [...rows];
  // 把现有依赖转成数组方便操作
  const depList = updatedRows[rowIndex].dependent ? updatedRows[rowIndex].dependent.split(',') : [];

  if (isChecked) {
    // 选中时追加值,做去重避免重复提交
    if (!depList.includes(checkValue)) {
      depList.push(checkValue);
    }
  } else {
    // 取消选中时移除对应值
    depList.splice(depList.indexOf(checkValue), 1);
  }

  // 转成逗号分隔字符串存回对应行
  updatedRows[rowIndex].dependent = depList.join(',');
  setRows(updatedRows);
}

3. 绑定checkbox的事件和回显逻辑

渲染每行checkbox的时候,绑定上述事件,同时增加选中状态回显:

{/* 渲染第i行的checkbox逻辑 */}
{Array.from({length: i}, (_, k) => (
  <label key={k} style={{marginRight: '8px'}}>
    <input
      type="checkbox"
      value={k + 1}
      onChange={(e) => handleCheckboxChange(i, e.target.value, e.target.checked)}
      checked={rows[i].dependent?.split(',').includes(String(k + 1)) || false}
    />
    checkbox {k + 1}
  </label>
))}

4. 保存数据

提交保存的时候,直接读取每行的dependent字段,已经是你需要的"1,2,3"格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:03