Checkbox 复选按钮

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

多选框

何时使用

复选框允许用户从一个数据集中选择多个选项。如果在一个列表中有多个选项,你可以通过使用复选框而不是开/关切换来节省空间。如果你有一个单选项,不要用复选框,使用开/关切换。

API

复选按钮

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内敛样式Object-
checked选中状态Boolean-
defaultChecked默认选中状态Booleanfalse
disabled禁用Boolean-
indeterminateCheckbox 的中间状态,只会影响到 Checkbox 的样式,并不影响其 checked 属性Boolean-
defaultIndeterminateCheckbox 的默认中间态,只会影响到 Checkbox 的样式,并不影响其 checked 属性Booleanfalse
onChange状态变化时触发的事件签名:Function(checked: Boolean, e: Event) => void参数:checked: {Boolean} 是否选中e: {Event} Dom 事件对象Function() => {}

Checkbox.Group

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内敛样式Object-
disabled整体禁用Boolean-
dataSource可选项列表, 数据项可为 String 或者 Object, 如 ['apple', 'pear', 'orange'] 或者 [{value: 'apple', label: '苹果',}, {value: 'pear', label: '梨'}, {value: 'orange', label: '橙子'}]Array<any>[]
value被选中的值列表Array-
defaultValue默认被选中的值列表Array-
children通过子元素方式设置内部 checkboxArray<ReactElement>-
onChange选中值改变时的事件签名:Function(value: Array, e: Event) => void参数:value: {Array} 选中项列表e: {Event} Dom 事件对象Function() => {}

代码示例

基本

使用 Checkbox 渲染的基本组件。

Checkbox 复选按钮 - 图1

查看源码在线预览

  1. import { Checkbox } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <h6>无标签不同状态的样子</h6>
  5. 未选中:<Checkbox />&nbsp; 默认选中:<Checkbox defaultChecked />&nbsp;
  6. 半选:<Checkbox defaultIndeterminate />&nbsp; 禁用:<Checkbox disabled />&nbsp;
  7. 选中时禁用:<Checkbox disabled checked />&nbsp; 选中:<Checkbox checked />
  8. <h6>带有label标签的样子</h6>
  9. <Checkbox>香蕉</Checkbox>
  10. <Checkbox id="apple" />
  11. <label htmlFor="apple" className="next-checkbox-label">
  12. 苹果
  13. </label>
  14. <label>
  15. <Checkbox id="pear" />
  16. <span className="next-checkbox-label">雪梨</span>
  17. </label>
  18. </div>,
  19. mountNode
  20. );

受限组件

使用 CheckboxGroup 渲染的组,通过设置 value 属性可以让组件变成受限组件

Checkbox 复选按钮 - 图2

查看源码在线预览

  1. import { Checkbox } from "@icedesign/base";
  2. const { Group: CheckboxGroup } = Checkbox;
  3. const list = [
  4. {
  5. value: "apple",
  6. label: "苹果"
  7. },
  8. {
  9. value: "pear",
  10. label: "梨"
  11. },
  12. {
  13. value: "orange",
  14. label: "橙子"
  15. }
  16. ];
  17. class ControlApp extends React.Component {
  18. constructor(props) {
  19. super(props);
  20. this.state = {
  21. value: ["orange"]
  22. };
  23. this.onChange = this.onChange.bind(this);
  24. }
  25. onChange(selectedItems) {
  26. console.log("onChange callback", selectedItems);
  27. this.setState({
  28. value: selectedItems
  29. });
  30. }
  31. render() {
  32. return (
  33. <div style={{ padding: "20px" }}>
  34. <CheckboxGroup
  35. value={this.state.value}
  36. dataSource={list}
  37. onChange={this.onChange}
  38. />
  39. <br />
  40. <CheckboxGroup
  41. value={this.state.value}
  42. dataSource={list}
  43. onChange={this.onChange}
  44. disabled
  45. />
  46. </div>
  47. );
  48. }
  49. }
  50. ReactDOM.render(<ControlApp />, mountNode);

中间状态组件

通过使用 indeterminate 来渲染中间状态的组件。

Checkbox 复选按钮 - 图3

查看源码在线预览

  1. import { Checkbox, Button } from "@icedesign/base";
  2. class IndeterminateApp extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. checked: false,
  7. indeterminate: true,
  8. disabled: false
  9. };
  10. }
  11. render() {
  12. return (
  13. <div>
  14. <Checkbox
  15. checked={this.state.checked}
  16. indeterminate={this.state.indeterminate}
  17. disabled={this.state.disabled}
  18. onChange={checked => {
  19. this.setState({ checked: checked, indeterminate: false });
  20. }}
  21. />
  22. <br />
  23. <br />
  24. <Button
  25. type="primary"
  26. onClick={() => {
  27. this.setState({ checked: true, indeterminate: false });
  28. }}
  29. >
  30. checked = true
  31. </Button>
  32. <br />
  33. <br />
  34. <Button
  35. type="primary"
  36. onClick={() => {
  37. this.setState({ checked: false });
  38. }}
  39. >
  40. checked = false
  41. </Button>
  42. <br />
  43. <br />
  44. <Button
  45. type="primary"
  46. onClick={() => {
  47. this.setState({ checked: false, indeterminate: true });
  48. }}
  49. >
  50. indeterminate = true
  51. </Button>
  52. <br />
  53. <br />
  54. <Button
  55. type="primary"
  56. onClick={() => {
  57. this.setState({ indeterminate: false });
  58. }}
  59. >
  60. indeterminate = false
  61. </Button>
  62. <br />
  63. <br />
  64. <Button
  65. type="primary"
  66. onClick={() => {
  67. this.setState({ disabled: !this.state.disabled });
  68. }}
  69. >
  70. toggle disabled
  71. </Button>
  72. </div>
  73. );
  74. }
  75. }
  76. ReactDOM.render(<IndeterminateApp />, mountNode);

Checkbox嵌套使用

使用 CheckboxGroup,通过直接嵌套 Checkbox 组件来渲染的组。

Checkbox 复选按钮 - 图4

查看源码在线预览

  1. import { Checkbox } from "@icedesign/base";
  2. const { Group: CheckboxGroup } = Checkbox;
  3. class NestApp extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. value: ["orange", "orange2"]
  8. };
  9. this.onChange = this.onChange.bind(this);
  10. }
  11. onChange(selectedItems) {
  12. this.setState({
  13. value: selectedItems
  14. });
  15. }
  16. render() {
  17. return (
  18. <div>
  19. <CheckboxGroup value={this.state.value} onChange={this.onChange}>
  20. <Checkbox id="apple" value="apple" disabled>
  21. 苹果
  22. </Checkbox>
  23. <Checkbox id="watermelon" value="watermelon">
  24. 西瓜
  25. </Checkbox>
  26. <Checkbox id="orange" value="orange">
  27. 橙子
  28. </Checkbox>
  29. </CheckboxGroup>
  30. <br />
  31. <br />
  32. <CheckboxGroup
  33. value={this.state.value}
  34. onChange={this.onChange}
  35. disabled
  36. >
  37. <Checkbox id="apple2" value="apple2" disabled>
  38. 苹果
  39. </Checkbox>
  40. <Checkbox id="watermelon2" value="watermelon2">
  41. 西瓜
  42. </Checkbox>
  43. <Checkbox id="orange2" value="orange2">
  44. 橙子
  45. </Checkbox>
  46. </CheckboxGroup>
  47. </div>
  48. );
  49. }
  50. }
  51. ReactDOM.render(<NestApp />, mountNode);

非受限组件

使用 CheckboxGroup 渲染的组,通过设置 defaultValue 属性可以让组件变成非受限组件

Checkbox 复选按钮 - 图5

查看源码在线预览

  1. import { Checkbox } from "@icedesign/base";
  2. const { Group: CheckboxGroup } = Checkbox;
  3. const list = [
  4. {
  5. value: "apple",
  6. label: "苹果",
  7. disabled: false
  8. },
  9. {
  10. value: "pear",
  11. label: "梨"
  12. },
  13. {
  14. value: "orange",
  15. label: "橙子",
  16. disabled: true
  17. }
  18. ];
  19. class UnControlApp extends React.Component {
  20. constructor(props) {
  21. super(props);
  22. this.onChange = this.onChange.bind(this);
  23. }
  24. onChange(selectedItems) {
  25. console.log("onChange callback", selectedItems);
  26. }
  27. render() {
  28. return (
  29. <div style={{ padding: "20px" }}>
  30. <h4>dataSource</h4>
  31. <CheckboxGroup
  32. defaultValue={["apple"]}
  33. dataSource={list}
  34. onChange={this.onChange}
  35. />
  36. <br />
  37. <br />
  38. <CheckboxGroup
  39. defaultValue={["apple"]}
  40. dataSource={list}
  41. onChange={this.onChange}
  42. disabled
  43. />
  44. <br />
  45. <h4>嵌套使用</h4>
  46. <CheckboxGroup
  47. disabled
  48. defaultValue={["apple"]}
  49. onChange={this.onChange}
  50. >
  51. <Checkbox id="apple" value="apple" disabled>
  52. 苹果
  53. </Checkbox>
  54. <Checkbox id="watermelon" value="watermelon">
  55. 西瓜
  56. </Checkbox>
  57. <Checkbox id="orange" value="orange">
  58. 橙子
  59. </Checkbox>
  60. </CheckboxGroup>
  61. </div>
  62. );
  63. }
  64. }
  65. ReactDOM.render(<UnControlApp />, mountNode);

相关区块

Checkbox 复选按钮 - 图6

暂无相关区块