Radio单选框

    • 用于在多个备选项中选中单个状态。

    • 和 Select 的区别是,Radio 所有选项默认可见,方便用户在比较中选择,因此选项不宜过多。

    基本

    最简单的用法。

    Radio 单选框 - 图2

    一组互斥的 Radio 配合使用。

    1. const RadioGroup = Radio.Group;
    2. class App extends React.Component {
    3. state = {
    4. value: 1,
    5. };
    6. onChange = e => {
    7. console.log('radio checked', e.target.value);
    8. this.setState({
    9. value: e.target.value,
    10. });
    11. };
    12. render() {
    13. return (
    14. <RadioGroup onChange={this.onChange} value={this.state.value}>
    15. <Radio value={1}>A</Radio>
    16. <Radio value={2}>B</Radio>
    17. <Radio value={3}>C</Radio>
    18. <Radio value={4}>D</Radio>
    19. </RadioGroup>
    20. );
    21. }
    22. }
    23. ReactDOM.render(<App />, mountNode);

    通过配置 options 参数来渲染单选框。

    1. import { Radio } from 'antd';
    2. const RadioGroup = Radio.Group;
    3. const plainOptions = ['Apple', 'Pear', 'Orange'];
    4. const options = [
    5. { label: 'Apple', value: 'Apple' },
    6. { label: 'Pear', value: 'Pear' },
    7. { label: 'Orange', value: 'Orange' },
    8. ];
    9. const optionsWithDisabled = [
    10. { label: 'Apple', value: 'Apple' },
    11. { label: 'Pear', value: 'Pear' },
    12. { label: 'Orange', value: 'Orange', disabled: false },
    13. ];
    14. class App extends React.Component {
    15. state = {
    16. value1: 'Apple',
    17. value2: 'Apple',
    18. value3: 'Apple',
    19. };
    20. onChange1 = e => {
    21. console.log('radio1 checked', e.target.value);
    22. this.setState({
    23. value1: e.target.value,
    24. });
    25. };
    26. onChange2 = e => {
    27. console.log('radio2 checked', e.target.value);
    28. this.setState({
    29. value2: e.target.value,
    30. });
    31. };
    32. onChange3 = e => {
    33. this.setState({
    34. value3: e.target.value,
    35. });
    36. };
    37. render() {
    38. return (
    39. <div>
    40. <RadioGroup options={plainOptions} onChange={this.onChange1} value={this.state.value1} />
    41. <RadioGroup
    42. options={optionsWithDisabled}
    43. onChange={this.onChange3}
    44. value={this.state.value3}
    45. />
    46. </div>
    47. );
    48. }
    49. }
    50. ReactDOM.render(<App />, mountNode);

    Radio 单选框 - 图4

    单选组合 - 配合 name 使用

    可以为 RadioGroup 配置 name 参数,为组合内的 input 元素赋予相同的 name 属性,使浏览器把 RadioGroup 下的 Radio 真正看作是一组(例如可以通过方向键始终在同一组内更改选项)。

    实色填底的单选按钮样式。

    1. import { Radio } from 'antd';
    2. ReactDOM.render(
    3. <div>
    4. <div>
    5. <Radio.Group defaultValue="a" buttonStyle="solid">
    6. <Radio.Button value="a">Hangzhou</Radio.Button>
    7. <Radio.Button value="b">Shanghai</Radio.Button>
    8. <Radio.Button value="c">Beijing</Radio.Button>
    9. <Radio.Button value="d">Chengdu</Radio.Button>
    10. </Radio.Group>
    11. </div>
    12. <div style={{ marginTop: 16 }}>
    13. <Radio.Group defaultValue="c" buttonStyle="solid">
    14. <Radio.Button value="a">Hangzhou</Radio.Button>
    15. <Radio.Button value="b" disabled>
    16. Shanghai
    17. </Radio.Button>
    18. <Radio.Button value="c">Beijing</Radio.Button>
    19. <Radio.Button value="d">Chengdu</Radio.Button>
    20. </Radio.Group>
    21. </div>
    22. </div>,
    23. mountNode,
    24. );

    Radio 单选框 - 图6

    不可用

    1. import { Radio, Button } from 'antd';
    2. class App extends React.Component {
    3. state = {
    4. disabled: true,
    5. };
    6. toggleDisabled = () => {
    7. this.setState({
    8. disabled: !this.state.disabled,
    9. });
    10. };
    11. render() {
    12. return (
    13. <div>
    14. <Radio defaultChecked={false} disabled={this.state.disabled}>
    15. Disabled
    16. </Radio>
    17. <br />
    18. <Radio defaultChecked disabled={this.state.disabled}>
    19. Disabled
    20. </Radio>
    21. <div style={{ marginTop: 20 }}>
    22. <Button type="primary" onClick={this.toggleDisabled}>
    23. Toggle disabled
    24. </Button>
    25. </div>
    26. </div>
    27. );
    28. }
    29. ReactDOM.render(<App />, mountNode);

    垂直的 RadioGroup,配合更多输入框选项。

    Radio 单选框 - 图8

    按钮样式

    按钮样式的单选组合。

    1. import { Radio } from 'antd';
    2. const RadioButton = Radio.Button;
    3. const RadioGroup = Radio.Group;
    4. console.log(`radio checked:${e.target.value}`);
    5. }
    6. ReactDOM.render(
    7. <div>
    8. <div>
    9. <RadioGroup onChange={onChange} defaultValue="a">
    10. <RadioButton value="a">Hangzhou</RadioButton>
    11. <RadioButton value="b">Shanghai</RadioButton>
    12. <RadioButton value="c">Beijing</RadioButton>
    13. <RadioButton value="d">Chengdu</RadioButton>
    14. </RadioGroup>
    15. </div>
    16. <div style={{ marginTop: 16 }}>
    17. <RadioGroup onChange={onChange} defaultValue="a">
    18. <RadioButton value="a">Hangzhou</RadioButton>
    19. <RadioButton value="b" disabled>
    20. Shanghai
    21. </RadioButton>
    22. <RadioButton value="c">Beijing</RadioButton>
    23. <RadioButton value="d">Chengdu</RadioButton>
    24. </RadioGroup>
    25. </div>
    26. <div style={{ marginTop: 16 }}>
    27. <RadioGroup disabled onChange={onChange} defaultValue="a">
    28. <RadioButton value="a">Hangzhou</RadioButton>
    29. <RadioButton value="b">Shanghai</RadioButton>
    30. <RadioButton value="c">Beijing</RadioButton>
    31. <RadioButton value="d">Chengdu</RadioButton>
    32. </RadioGroup>
    33. </div>
    34. </div>,
    35. mountNode,
    36. );

    大中小三种组合,可以和表单输入框进行对应配合。

    1. import { Radio } from 'antd';
    2. const RadioButton = Radio.Button;
    3. const RadioGroup = Radio.Group;
    4. ReactDOM.render(
    5. <div>
    6. <div>
    7. <RadioGroup defaultValue="a" size="large">
    8. <RadioButton value="a">Hangzhou</RadioButton>
    9. <RadioButton value="b">Shanghai</RadioButton>
    10. <RadioButton value="c">Beijing</RadioButton>
    11. <RadioButton value="d">Chengdu</RadioButton>
    12. </RadioGroup>
    13. </div>
    14. <div style={{ marginTop: 16 }}>
    15. <RadioGroup defaultValue="a">
    16. <RadioButton value="a">Hangzhou</RadioButton>
    17. <RadioButton value="b">Shanghai</RadioButton>
    18. <RadioButton value="c">Beijing</RadioButton>
    19. <RadioButton value="d">Chengdu</RadioButton>
    20. </RadioGroup>
    21. </div>
    22. <div style={{ marginTop: 16 }}>
    23. <RadioGroup defaultValue="a" size="small">
    24. <RadioButton value="a">Hangzhou</RadioButton>
    25. <RadioButton value="b">Shanghai</RadioButton>
    26. <RadioButton value="c">Beijing</RadioButton>
    27. <RadioButton value="d">Chengdu</RadioButton>
    28. </RadioGroup>
    29. </div>
    30. </div>,
    31. mountNode,