【问题标题】:How to get multiple checkbox values in reactjs using antd checkbox?如何使用 antd 复选框在 reactjs 中获取多个复选框值?
【发布时间】:2019-08-16 20:06:25
【问题描述】:

我正在获取基于表格列的复选框。如果我选择复选框,我只会得到一个选中的值。我想获得多个检查值。

我如何做到这一点?

class StudentTable extends React.Component {
  state = {
    columns: [
      {
        title: "StudentID",
        dataIndex: "studentid",
        key: "studentid"
      },
      {
        title: "Name",
        dataIndex: "name",
        key: "name"
      }
    ]
  };

  onChange = e => {
    alert(JSON.stringify(e));
    console.log(`checked = ${e.target.checked}`);
    console.log(`checked = ${e.target.name}`);

    this.setState({
      [e.target.name]: e.target.value
    });

    if (e.target.checked === true) {
      let filterData = this.state.columns.filter(columnData => {
        return e.target.name === columnData.dataIndex;
      });
      CsvData.push(filterData[0].dataIndex);

      console.log("After Filter", filterData[0].dataIndex);
    }
  };

  render() {
    return (
      <div>
        {this.state.columns.map(columData => {
          return (
            <div key={columData.key}>
              <Checkbox name={columData.dataIndex} onChange={this.onChange}>
                {columData.dataIndex}
              </Checkbox>
            </div>
          );
        })}
        <CSVLink data={CsvData}>Download me</CSVLink>;<h2>Student Data</h2>
        <Table
          dataSource={data}
          columns={this.state.columns}
          pagination={{ pageSize: 5 }}
          rowKey={record => record.id}
          onChange={this.handleChange}
        />
      </div>
    );
  }
}

【问题讨论】:

  • 能否正确格式化代码块?谢谢!

标签: reactjs antd


【解决方案1】:

使用复选框组而不是复选框

<Checkbox.Group 
     options={this.state.columns.map(column => ({label:column.dataIndex, value: column.dataIndex}))} 
     onChange={this.onChange} 
/>

我希望这会有所帮助

Antd 的复选框组https://ant.design/components/checkbox/#components-checkbox-demo-group

【讨论】:

  • 感谢您的回复。如何根据选中的复选框获取表格数据
  • 使用选定的列对数据进行过滤,如下所示:datas.map(data =&gt; {let newData = {}; ["column1","column1"].forEach(key=&gt; newData[key] = data[key]); return newData}
  • 我尝试过这种方式,但我得到未定义的列
  • 你能看看这个吗? stackoverflow.com/questions/61089573/…
猜你喜欢
  • 2020-08-07
  • 2017-12-08
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2016-12-30
相关资源
最近更新 更多