单选按钮组就绪 Storybook
单选按钮组用于从多个互斥选项中选择单个值,采用水平标签式布局。
使用场景
当有最多四个选项可用时,使用 RadioButtonGroup
进行互斥选择。这是因为 RadioButtonGroup
不能有多于一行,并且需要适应小分辨率。对于超过四个选项的互斥选择,请使用 Select
组件或 RadioButtonList
组件。
单选按钮只能存在于这种类型的组中。如果您想要单个选项,最好改用 Switch
。要在同一组或同一上下文中提供多个非互斥选项,请改用 Checkbox
。
用法
基本单选按钮组
加载中...
实时编辑器
function Basic() { const [value, setValue] = useState<string>(); return ( <RadioButtonGroup options={[ { label: 'Prometheus', value: 'prometheus' }, { label: 'Graphite', value: 'graphite', icon: 'cloud' }, { label: 'Elastic', value: 'elastic' }, ]} value={value} onChange={setValue} /> ); }
禁用选项
可以通过将一些选项传递给 disabledOptions
prop 来禁用它们。请记住,disabledOptions
会与选项值通过 ===
运算符进行比较。
加载中...
实时编辑器
function WithDisabledOptions() { const [value, setValue] = useState('graphite'); return ( <RadioButtonGroup options={[ { label: 'Prometheus', value: 'prometheus' }, { label: 'Graphite', value: 'graphite', icon: 'cloud' }, { label: 'Elastic', value: 'elastic' }, ]} value={value} disabledOptions={['prometheus', 'elastic']} onChange={setValue} /> ); }
整个控件可以通过 disabled
prop 禁用。
加载中...
实时编辑器
function Disabled() { const [value, setValue] = useState('prometheus'); return ( <RadioButtonGroup disabled options={[ { label: 'Prometheus', value: 'prometheus' }, { label: 'Graphite', value: 'graphite', icon: 'cloud' }, { label: 'Elastic', value: 'elastic' }, ]} value={value} onChange={setValue} /> ); }
尺寸
指定尺寸 sm
可获得更小、更紧凑的控件。小型变体通常与其他元素内联使用,例如标题。避免在表单中使用 sm
。
加载中...
实时编辑器
function WithSize() { const [value, setValue] = useState('prometheus'); return ( <RadioButtonGroup size="sm" options={[ { label: 'Prometheus', value: 'prometheus' }, { label: 'Graphite', value: 'graphite', icon: 'cloud' }, { label: 'Elastic', value: 'elastic' }, ]} value={value} onChange={setValue} /> ); }
宽度
默认情况下,RadioButtonGroup
的宽度将根据其内容调整。指定 fullWidth
prop 可使控件横跨容器的整个宽度。
加载中...
实时编辑器
function FullWidth() { const [value, setValue] = useState('prometheus'); return ( <RadioButtonGroup fullWidth options={[ { label: 'Prometheus', value: 'prometheus' }, { label: 'Graphite', value: 'graphite', icon: 'cloud' }, { label: 'Elastic', value: 'elastic' }, ]} value={value} onChange={setValue} /> ); }