如何以编程方式检查Material-UI复选框?

时间:2019-02-22 19:45:18

标签: reactjs forms material-ui

我在应用中使用Material-UI的nrows组件以及相关标签。

我希望复选框和标签都可以单击,但是我不能使用它们的Checkbox组件(具有FormControlLabelcontrol属性),这将确保单击,因为我想为标签使用其他组件,而不仅仅是文本,而label似乎不支持它。

因此,我正在考虑在标签组件被点击时触发复选框的点击。有适当的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以将Checkbox用常规的label包裹起来,以使标签切换复选框。

<label> Label <Checkbox/></label>;

您还可以通过为Checkbox道具使用状态来控制checked,并以编程方式进行切换。

const { Checkbox } = window['material-ui'];

class App extends React.Component {
  state = { isChecked: false };

  toggle = () => {
    this.setState(prevState => ({ isChecked: !prevState.isChecked }));
  };

  render() {
    return (
      <div>
        <Checkbox checked={this.state.isChecked} onChange={this.toggle} />
        <button onClick={this.toggle}>Toggle</button>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@material-ui/core/umd/material-ui.production.min.js"></script>

<div id="root"></div>