Radio 单按钮

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

安装方法

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

开发指南

单选框

何时使用

单选按钮允许用户从一个数据集中选择单个选项。如果你觉得用户需要并排看到所有的可选项,使用单选按钮进行排他操作。此外,考虑使用下拉列表,相对于显示所有的选项占用更少的空间。

API

单按钮

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内敛样式Object-
checked设置radio是否选中Boolean-
defaultCheckedradio的默认选中Boolean-
onChange状态变化时触发的事件签名:Function(checked: Boolean, e: Event) => void参数:checked: {Boolean} 是否选中e: {Event} Dom 事件对象Function() => {}
disabled表示radio被禁用Boolean-

Radio.Group

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内敛样式Object-
valueradio group的选中项的值String/Number/Boolean-
defaultValueradio group的默认值String/Number/Boolean-
onChange选中值改变时的事件签名:Function(value: String/Number, e: Event) => void参数:value: {String/Number} 选中项的值e: {Event} Dom 事件对象Function() => {}
disabled表示radio被禁用Boolean-
shape可以设置成 button 展示形状可选值:'button'(按钮状)Enum-
sizeshape 属性配套使用,shape设为button时有效可选值:'large'(大)'medium'(中)'small'(小)Enum'medium'
dataSource可选项列表, 数据项可为 String 或者 Object, 如 ['apple', 'pear', 'orange']Array<any>[]
children通过子元素方式设置内部radioArray<ReactElement>/ReactElement-

代码示例

基本

使用 Radio 渲染的基本组件。

Radio 单按钮 - 图1

查看源码在线预览

  1. import { Radio } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <h6>Without Label</h6>
  5. <Radio defaultChecked />&nbsp;
  6. <Radio checked />&nbsp;
  7. <Radio disabled />&nbsp;
  8. <Radio checked disabled />&nbsp;
  9. <Radio />
  10. <br />
  11. <h6>With Label</h6>
  12. <Radio id="apple">苹果</Radio>
  13. <Radio id="banana" />
  14. <label htmlFor="banana" className="next-radio-label">
  15. 香蕉
  16. </label>
  17. <label>
  18. <Radio id="pear" />
  19. <span className="next-radio-label">雪梨</span>
  20. </label>
  21. </div>,
  22. mountNode
  23. );

按钮样式组件

使用 RadioGroup 渲染的组,通过设置 shape="button" 可以让组件以按钮形式展示,同时可以通过 size 来控制组件大小。

Radio 单按钮 - 图2

查看源码在线预览

  1. import { Radio } from "@icedesign/base";
  2. const { Group: RadioGroup } = Radio;
  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 ControlApp extends React.Component {
  20. constructor(props) {
  21. super(props);
  22. this.state = {
  23. value1: "apple",
  24. value2: ""
  25. };
  26. this.onNestChange = this.onNestChange.bind(this);
  27. this.onNormalChange = this.onNormalChange.bind(this);
  28. }
  29. onNormalChange(value) {
  30. this.setState({
  31. value1: value
  32. });
  33. }
  34. onNestChange(value) {
  35. this.setState({
  36. value2: value
  37. });
  38. }
  39. render() {
  40. return (
  41. <div>
  42. <h4>size medium的正常状态</h4>
  43. <RadioGroup
  44. dataSource={list}
  45. shape="button"
  46. size="medium"
  47. value={this.state.value1}
  48. onChange={this.onNormalChange}
  49. />
  50. <br />
  51. <br />
  52. <h4>size large 的状态</h4>
  53. <RadioGroup
  54. shape="button"
  55. size="large"
  56. value={this.state.value2}
  57. onChange={this.onNestChange}
  58. >
  59. <Radio id="banana" value="banana">
  60. 香蕉
  61. </Radio>
  62. <Radio id="watermelon" value="watermelon">
  63. 西瓜
  64. </Radio>
  65. <Radio id="peach" value="peach">
  66. 桃子
  67. </Radio>
  68. </RadioGroup>
  69. <br />
  70. <br />
  71. <h4>disabled 和选中后disabled的样子</h4>
  72. <RadioGroup
  73. shape="button"
  74. size="medium"
  75. value="banana"
  76. onChange={this.onNestChange}
  77. >
  78. <Radio id="peach" disabled value="peach">
  79. 桃子
  80. </Radio>
  81. <Radio id="banana" disabled value="banana">
  82. 香蕉
  83. </Radio>
  84. </RadioGroup>
  85. </div>
  86. );
  87. }
  88. }
  89. ReactDOM.render(<ControlApp />, mountNode);

受限组件

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

Radio 单按钮 - 图3

查看源码在线预览

  1. import { Radio } from "@icedesign/base";
  2. const { Group: RadioGroup } = Radio;
  3. const list = [
  4. {
  5. value: 0,
  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(value) {
  26. this.setState({
  27. value: value
  28. });
  29. }
  30. render() {
  31. return (
  32. <div>
  33. normal:{" "}
  34. <RadioGroup
  35. dataSource={list}
  36. value={this.state.value}
  37. onChange={this.onChange}
  38. />
  39. <br />
  40. <br />
  41. <br />
  42. disabled:{" "}
  43. <RadioGroup
  44. disabled
  45. dataSource={list}
  46. value={this.state.value}
  47. onChange={this.onChange}
  48. />
  49. </div>
  50. );
  51. }
  52. }
  53. ReactDOM.render(<ControlApp />, mountNode);

嵌套组件

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

Radio 单按钮 - 图4

查看源码在线预览

  1. import { Radio } from "@icedesign/base";
  2. const { Group: RadioGroup } = Radio;
  3. class NestApp extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. value: "orange"
  8. };
  9. this.onChange = this.onChange.bind(this);
  10. }
  11. onChange(value) {
  12. this.setState({
  13. value: value
  14. });
  15. }
  16. render() {
  17. return (
  18. <div>
  19. <RadioGroup value={this.state.value} onChange={this.onChange}>
  20. <Radio id="apple" value="apple">
  21. 苹果
  22. </Radio>
  23. <Radio id="watermelon" value="watermelon">
  24. 西瓜
  25. </Radio>
  26. <Radio id="orange" value="orange">
  27. 橙子
  28. </Radio>
  29. </RadioGroup>
  30. </div>
  31. );
  32. }
  33. }
  34. ReactDOM.render(<NestApp />, mountNode);

非受限组件

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

Radio 单按钮 - 图5

查看源码在线预览

  1. import { Radio } from "@icedesign/base";
  2. const { Group: RadioGroup } = Radio;
  3. const list = [
  4. {
  5. value: "apple",
  6. label: "苹果",
  7. disabled: false
  8. },
  9. {
  10. value: "pear",
  11. label: "梨",
  12. disabled: true
  13. },
  14. {
  15. value: "orange",
  16. label: "橙子"
  17. }
  18. ];
  19. const UnControlApp = () => {
  20. return (
  21. <div>
  22. <RadioGroup dataSource={list} defaultValue={"apple"} />
  23. </div>
  24. );
  25. };
  26. ReactDOM.render(<UnControlApp />, mountNode);

相关区块

Radio 单按钮 - 图6

暂无相关区块