ReactJS:使用 material-ui 获取多个复选框值

Ala*_*lan 3 checkbox function reactjs material-ui

如何获取多个复选框值?Ref 在材质 ui 复选框中不起作用,不知道为什么。

<Checkbox key={i} label={catagory.name} ref="categories" value={catagory_name} name="category"  />
Run Code Online (Sandbox Code Playgroud)

例如:例子

如果没有 material-ui,您可以通过 ref 获取值,但是使用 material-ui 则需要另一种方法来获取复选框值。

我从 API 获取数据,所以它会不时添加更多。如何获得价值?我应该写什么函数?有人知道吗?

kin*_*ser 5

您可以使用内置的 Material UI 复选框功能 - onChange. 它将返回指定的类别及其

app.js

class App extends Component {

  result = new Set();

  handleCheckbox(event, isChecked, value) {
    console.log(isChecked, value); 
    this.res.add(value);
    if (this.res.size === 3) console.log(this.res);
  }

  labelList = [{id: 1, category: 'a'}, {id: 2, category: 'b'}, {id: 3, category: 'c'}]; // your data

  render() {
    return (
      <div className="App">
        {this.labelList.map(element => (
          <CheckboxField
            key={element.id}
            label={element.category}
            category={element.category}
            onChange={this.handleCheckbox}
          />
        ))}
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

Checkbox.js

export class CheckboxField extends React.PureComponent {

  handleCheck = (event, isInputChecked) => {
    this.props.onChange(event, isInputChecked, this.props.category);
  };

  render() {
    return (
          <Checkbox
            label={this.props.category}
            iconStyle={{fill: '#000'}}
            value={this.props.category}
            onCheck={this.handleCheck}
          />
    )}
}
Run Code Online (Sandbox Code Playgroud)