【问题标题】:how to maintain the state for each radio button in a table view - react如何维护表格视图中每个单选按钮的状态 - 反应
【发布时间】:2021-10-20 02:10:01
【问题描述】:

我有下面的 html 表格视图。 使用 React,当用户连续更改任何单选按钮时,我试图更改 checked 值。

我正在尝试这个 onchange 函数,但它不起作用

changeStatus(e)
{
  if(e.target.value === 'on')
  {
    e.target.checked = true
  }
  else
  {
    e.target.checked = false
  }
  console.log(e.target.value + e.target.checked)
}

渲染函数

    {records.length>0 && records.map((row,i) => (
              // this.state.radio_val[row.id] = row.status;
            <tr key={i}>
              <td>{i+1}</td>
              <td>{row.name}</td>
              <td>          
                  <div className="form-check form-switch">
                  <input className="form-check-input" type="checkbox"  onChange={this.changeStatus.bind(this)} />
                  {/* <label class="form-check-label" for="flexSwitchCheckChecked">Checked switch checkbox input</label> */}
                  </div>
              </td>
              <td>
              <Link to={"/brand/"+row.slug}>
              <button type="button" className="btn btn-sm btn-info active"> <i className="fas fa-edit"></i > Edit</button>
              </Link>
              </td>
            </tr>
   ))}

请指导我维护单选按钮行的状态。我想在更改值的同时更改单选按钮的状态。

【问题讨论】:

  • 保持本地状态,用于根据行 ID 跟踪单选按钮状态。
  • 如果有一个单选按钮意味着,我可以拥有一个名称的状态。但在这里我有'N'次单选按钮如何定义状态以及如何附加到元素

标签: reactjs


【解决方案1】:

您需要维护数组中复选框的状态。

这是一个使用基于类的组件的example

  state = {
    checkboxes: Array(10).fill(false)
  };

  updateCheckbox(selectedIndex, { target: { checked } }) {
    this.setState(({ checkboxes }) => ({
      checkboxes: checkboxes.map((prev, index) =>
        index === selectedIndex ? checked : prev
      )
    }));
  }

和 JSX

{this.state.checkboxes.map((checked, index) => (
          <input
            key={index}
            type="checkbox"
            checked={checked}
            onChange={this.updateCheckbox.bind(this, index)}
          />
))}

当复选框发生变化时,对应的元素会根据索引进行更新。您可以使用 id 代替索引。

【讨论】:

  • 如何显示已经检查的数据,给定的示例适用于当前更改。我也想显示已经填充的状态。
  • @ManiMuthuPandi 只需根据现有数据修改初始状态,而不是使用虚假元素数组
猜你喜欢
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 2018-09-22
相关资源
最近更新 更多