Checkbox多选框

多选框。

何时使用

  • 在一组可选项中进行多项选择时;

  • 单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。

代码演示

Checkbox 多选框 - 图1

基本用法

简单的 checkbox。

  1. import { Checkbox } from 'choerodon-ui';
  2. function onChange(e) {
  3. console.log(`checked = ${e.target.checked}`);
  4. }
  5. ReactDOM.render(
  6. <Checkbox onChange={onChange}>Checkbox</Checkbox>,
  7. mountNode);

Checkbox 多选框 - 图2

受控的 Checkbox

联动 checkbox。

  1. import { Checkbox, Button } from 'choerodon-ui';
  2. class App extends React.Component {
  3. state = {
  4. checked: true,
  5. disabled: false,
  6. };
  7. render() {
  8. const label = `${this.state.checked ? 'Checked' : 'Unchecked'}-${this.state.disabled ? 'Disabled' : 'Enabled'}`;
  9. return (
  10. <div>
  11. <p style={{ marginBottom: '20px' }}>
  12. <Checkbox
  13. checked={this.state.checked}
  14. disabled={this.state.disabled}
  15. onChange={this.onChange}
  16. >
  17. {label}
  18. </Checkbox>
  19. </p>
  20. <p>
  21. <Button
  22. type="primary"
  23. size="small"
  24. onClick={this.toggleChecked}
  25. >
  26. {!this.state.checked ? 'Check' : 'Uncheck'}
  27. </Button>
  28. <Button
  29. style={{ marginLeft: '10px' }}
  30. type="primary"
  31. size="small"
  32. onClick={this.toggleDisable}
  33. >
  34. {!this.state.disabled ? 'Disable' : 'Enable'}
  35. </Button>
  36. </p>
  37. </div>
  38. );
  39. }
  40. toggleChecked = () => {
  41. this.setState({ checked: !this.state.checked });
  42. }
  43. toggleDisable = () => {
  44. this.setState({ disabled: !this.state.disabled });
  45. }
  46. onChange = (e) => {
  47. console.log('checked = ', e.target.checked);
  48. this.setState({
  49. checked: e.target.checked,
  50. });
  51. }
  52. }
  53. ReactDOM.render(<App />, mountNode);

Checkbox 多选框 - 图3

全选

在实现全选效果时,你可能会用到 indeterminate 属性。

  1. import { Checkbox } from 'choerodon-ui';
  2. const CheckboxGroup = Checkbox.Group;
  3. const plainOptions = ['Apple', 'Pear', 'Orange'];
  4. const defaultCheckedList = ['Apple', 'Orange'];
  5. class App extends React.Component {
  6. state = {
  7. checkedList: defaultCheckedList,
  8. indeterminate: true,
  9. checkAll: false,
  10. };
  11. render() {
  12. return (
  13. <div>
  14. <div style={{ borderBottom: '1px solid #E9E9E9' }}>
  15. <Checkbox
  16. indeterminate={this.state.indeterminate}
  17. onChange={this.onCheckAllChange}
  18. checked={this.state.checkAll}
  19. >
  20. Check all
  21. </Checkbox>
  22. </div>
  23. <br />
  24. <CheckboxGroup
  25. options={plainOptions}
  26. value={this.state.checkedList}
  27. onChange={this.onChange}
  28. />
  29. </div>
  30. );
  31. }
  32. onChange = checkedList => {
  33. this.setState({
  34. checkedList,
  35. indeterminate: !!checkedList.length && checkedList.length < plainOptions.length,
  36. checkAll: checkedList.length === plainOptions.length,
  37. });
  38. };
  39. onCheckAllChange = e => {
  40. this.setState({
  41. checkedList: e.target.checked ? plainOptions : [],
  42. indeterminate: false,
  43. checkAll: e.target.checked,
  44. });
  45. };
  46. }
  47. ReactDOM.render(<App />, mountNode);

Checkbox 多选框 - 图4

不可用

checkbox 不可用。

  1. import { Checkbox } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <div>
  4. <Checkbox defaultChecked={false} disabled />
  5. <br />
  6. <Checkbox defaultChecked disabled />
  7. </div>,
  8. mountNode);

Checkbox 多选框 - 图5

Checkbox 组

方便的从数组生成 Checkbox 组。

  1. import { Checkbox } from 'choerodon-ui';
  2. const CheckboxGroup = Checkbox.Group;
  3. function onChange(checkedValues) {
  4. console.log('checked = ', checkedValues);
  5. }
  6. const plainOptions = ['Apple', 'Pear', 'Orange'];
  7. const options = [
  8. { label: 'Apple', value: 'Apple' },
  9. { label: 'Pear', value: 'Pear' },
  10. { label: 'Orange', value: 'Orange' },
  11. ];
  12. const optionsWithDisabled = [
  13. { label: 'Apple', value: 'Apple' },
  14. { label: 'Pear', value: 'Pear' },
  15. { label: 'Orange', value: 'Orange', disabled: false },
  16. ];
  17. ReactDOM.render(
  18. <div>
  19. <CheckboxGroup
  20. label="这是一个label"
  21. options={plainOptions}
  22. defaultValue={['Apple']}
  23. onChange={onChange}
  24. />
  25. <br />
  26. <br />
  27. <CheckboxGroup options={options} defaultValue={['Pear']} onChange={onChange} />
  28. <br />
  29. <br />
  30. <CheckboxGroup
  31. options={optionsWithDisabled}
  32. disabled
  33. defaultValue={['Apple']}
  34. onChange={onChange}
  35. />
  36. </div>,
  37. mountNode,
  38. );

Checkbox 多选框 - 图6

布局

Checkbox.Group 内嵌 Checkbox 并与 Grid 组件一起使用,可以实现灵活的布局。

  1. import { Checkbox, Row, Col } from 'choerodon-ui';
  2. function onChange(checkedValues) {
  3. console.log('checked = ', checkedValues);
  4. }
  5. ReactDOM.render(
  6. <Checkbox.Group style={{ width: '100%' }} onChange={onChange}>
  7. <Row>
  8. <Col span={8}>
  9. <Checkbox value="A">A</Checkbox>
  10. </Col>
  11. <Col span={8}>
  12. <Checkbox value="B">B</Checkbox>
  13. </Col>
  14. <Col span={8}>
  15. <Checkbox value="C">C</Checkbox>
  16. </Col>
  17. <Col span={8}>
  18. <Checkbox value="D">D</Checkbox>
  19. </Col>
  20. <Col span={8}>
  21. <Checkbox value="E">E</Checkbox>
  22. </Col>
  23. </Row>
  24. </Checkbox.Group>,
  25. mountNode,
  26. );

API

Checkbox

参数说明类型默认值
autoFocus自动获取焦点booleanfalse
checked指定当前是否选中booleanfalse
defaultChecked初始是否选中booleanfalse
indeterminate设置 indeterminate 状态,只负责样式控制booleanfalse
onChange变化时回调函数Function(e:Event)-

Checkbox Group

参数说明类型默认值
defaultValue默认选中的选项string[][]
options指定可选项string[][]
value指定选中的选项string[][]
onChange变化时回调函数Function(checkedValue)-

方法

Checkbox

名称描述
blur()移除焦点
focus()获取焦点