Checkbox复选框 - 图1

Checkbox 复选框

基本用法

  1. import { Cell, Checkbox } from 'zarm';
  2. ReactDOM.render(
  3. <>
  4. <Cell><Checkbox>普通</Checkbox></Cell>
  5. <Cell><Checkbox defaultChecked>默认选中</Checkbox></Cell>
  6. <Cell><Checkbox disabled>禁用</Checkbox></Cell>
  7. <Cell><Checkbox defaultChecked disabled>选中且禁用</Checkbox></Cell>
  8. <Cell>
  9. <div className="agreement-box">
  10. <Checkbox id="agreement" />
  11. <label htmlFor="agreement">阅读并同意<a href="/#" onClick={(e) => { e.preventDefault(); alert('agree it'); }}>《XXX条款》</a>中的相关规定</label>
  12. </div>
  13. </Cell>
  14. </>
  15. , mountNode);

受控使用

  1. import { Cell, Checkbox, Modal } from 'zarm';
  2. class Demo extends React.Component {
  3. state = {
  4. isChecked: false,
  5. }
  6. onChange = (e) => {
  7. if (!e.target.checked) {
  8. Modal.confirm({
  9. content: '是否要取消选择',
  10. cancelText: '不取消',
  11. }).then((res) => {
  12. if (res) {
  13. this.setState({
  14. isChecked: false,
  15. });
  16. }
  17. });
  18. return;
  19. }
  20. this.setState({
  21. isChecked: true,
  22. });
  23. }
  24. render() {
  25. const { isChecked } = this.state;
  26. return (
  27. <Cell>
  28. <Checkbox checked={isChecked} onChange={this.onChange}>取消勾选前确认</Checkbox>
  29. </Cell>
  30. );
  31. }
  32. }
  33. ReactDOM.render(<Demo />, mountNode);

组合使用

  1. import { Cell, Checkbox } from 'zarm';
  2. class Demo extends React.Component {
  3. state = {
  4. value: [],
  5. }
  6. onCheckedAll = (e) => {
  7. this.setState({
  8. value: e.target.checked ? ['0', '1', '2'] : [],
  9. });
  10. }
  11. onChange = (value) => {
  12. console.log(value);
  13. this.setState({ value });
  14. }
  15. render() {
  16. const { value } = this.state;
  17. return (
  18. <>
  19. <Cell>
  20. <Checkbox
  21. checked={value.length === 3}
  22. indeterminate={value.length < 3 && value.length > 0}
  23. onChange={this.onCheckedAll}
  24. >
  25. 全选 / 反选
  26. </Checkbox>
  27. </Cell>
  28. <Cell>
  29. <Checkbox.Group value={value} onChange={this.onChange}>
  30. <Checkbox value="0">选项一</Checkbox>
  31. <Checkbox value="1">选项二</Checkbox>
  32. <Checkbox value="2">选项三</Checkbox>
  33. </Checkbox.Group>
  34. </Cell>
  35. </>
  36. );
  37. }
  38. }
  39. ReactDOM.render(<Demo />, mountNode);

按钮样式

  1. import { Cell, Checkbox } from 'zarm';
  2. class Demo extends React.Component {
  3. state = {
  4. value: [],
  5. }
  6. render() {
  7. const { value } = this.state;
  8. return (
  9. <div>
  10. <Cell
  11. description={
  12. <Checkbox.Group
  13. type="button"
  14. value={this.state.value}
  15. onChange={(value) => {
  16. this.setState({ value }, () => console.log(`checked to ${value}`));
  17. }}>
  18. <Checkbox value="0">选项一</Checkbox>
  19. <Checkbox value="1">选项二</Checkbox>
  20. <Checkbox value="2">选项三</Checkbox>
  21. </Checkbox.Group>
  22. }
  23. >
  24. 普通
  25. </Cell>
  26. <Cell
  27. description={
  28. <Checkbox.Group type="button" defaultValue={['0', '1']}>
  29. <Checkbox value="0">选项一</Checkbox>
  30. <Checkbox value="1">选项二</Checkbox>
  31. <Checkbox value="2">选项三</Checkbox>
  32. </Checkbox.Group>
  33. }
  34. >
  35. 指定默认值
  36. </Cell>
  37. <Cell
  38. description={
  39. <Checkbox.Group type="button">
  40. <Checkbox value="0">选项一</Checkbox>
  41. <Checkbox value="1" disabled>选项二</Checkbox>
  42. <Checkbox value="2" disabled checked>选项三</Checkbox>
  43. </Checkbox.Group>
  44. }
  45. >
  46. 禁用指定项
  47. </Cell>
  48. <Cell
  49. description={
  50. <Checkbox.Group type="button" shape="rect">
  51. <Checkbox value="0">选项一</Checkbox>
  52. <Checkbox value="1">选项二</Checkbox>
  53. <Checkbox value="2">选项三</Checkbox>
  54. </Checkbox.Group>
  55. }
  56. >
  57. 直角
  58. </Cell>
  59. <Cell
  60. description={
  61. <Checkbox.Group type="button" shape="round">
  62. <Checkbox value="0">选项一</Checkbox>
  63. <Checkbox value="1">选项二</Checkbox>
  64. <Checkbox value="2">选项三</Checkbox>
  65. </Checkbox.Group>
  66. }
  67. >
  68. 椭圆角
  69. </Cell>
  70. <Cell
  71. description={
  72. <Checkbox.Group ghost type="button" defaultValue={['2']}>
  73. <Checkbox value="0">选项一</Checkbox>
  74. <Checkbox value="1">选项二</Checkbox>
  75. <Checkbox value="2" disabled>选项三</Checkbox>
  76. </Checkbox.Group>
  77. }
  78. >
  79. 幽灵按钮
  80. </Cell>
  81. </div>
  82. )
  83. }
  84. }
  85. ReactDOM.render(<Demo />, mountNode);

块级样式

  1. import { Cell, Checkbox } from 'zarm';
  2. ReactDOM.render(
  3. <Cell>
  4. <Checkbox.Group block type="button">
  5. <Checkbox value="0">选项一</Checkbox>
  6. <Checkbox value="1">选项二</Checkbox>
  7. <Checkbox value="2">选项三</Checkbox>
  8. </Checkbox.Group>
  9. </Cell>
  10. , mountNode);

列表样式

  1. import { Checkbox } from 'zarm';
  2. ReactDOM.render(
  3. <Checkbox.Group type="cell">
  4. <Checkbox value="0">选项一</Checkbox>
  5. <Checkbox value="1">选项二</Checkbox>
  6. <Checkbox value="2" disabled>选项三(禁止选择)</Checkbox>
  7. </Checkbox.Group>
  8. , mountNode);

列表样式禁用状态

  1. import { Checkbox } from 'zarm';
  2. ReactDOM.render(
  3. <Checkbox.Group disabled type="cell">
  4. <Checkbox value="0">选项一</Checkbox>
  5. <Checkbox value="1">选项二</Checkbox>
  6. <Checkbox value="2" checked>选项三</Checkbox>
  7. </Checkbox.Group>
  8. , mountNode);

API

Checkbox

属性类型默认值说明
typestring-显示类型,可选值 button, cell
disabledbooleanfalse是否禁用
valuestring | number-
checkedboolean-当前是否选中
defaultCheckedboolean-初始是否选中
indeterminatebooleanfalse当前是否为未全选状态
idstring-方便外部带有for属性的label标签控制当前checkbox
onChange(event?: ChangeEvent) => void-值变化时触发的回调函数

Checkbox.Group

属性类型默认值说明
typestring-显示类型,可选值 button, cell
valuenumber[] | string[][]选中值
defaultValuenumber[] | string[][]初始选中值
disabledbooleanfalse是否禁用
blockbooleanfalse子项是否为块级元素
onChange(values?: number[] | string[]) => void-值变化时触发的回调函数
sizestring'xs'按钮类型时的大小,可选值为 lgmdsmxs
shapestring'radius'按钮类型时的形状,可选值 rect, radius, round
ghostbooleanfalse按钮类型时,选中项样式是否为幽灵按钮