The Radio Group allows the user to select one option from a set.
Use radio buttons when the user needs to see all available options. If available options can be collapsed, consider using a Select component because it uses less space.
Radio buttons should have the most commonly used option selected by default.
RadioGroup
is a helpful wrapper used to group Radio
components that provides an easier API, and proper keyboard accessibility to the group.
{{ādemoā: āRadioButtonsGroup.jsā}}
To lay out the buttons horizontally, set the row
prop:
{{ādemoā: āRowRadioButtonsGroup.jsā}}
You can control the radio with the value
and onChange
props:
{{ādemoā: āControlledRadioButtonsGroup.jsā}}
Radio
can also be used standalone, without the RadioGroup wrapper.
{{ādemoā: āRadioButtons.jsā}}
Use the size
prop or customize the font size of the svg icons to change the size of the radios.
{{ādemoā: āSizeRadioButtons.jsā}}
{{ādemoā: āColorRadioButtons.jsā}}
You can change the placement of the label with the FormControlLabel
componentās labelPlacement
prop:
{{ādemoā: āFormControlLabelPlacement.jsā}}
In general, radio buttons should have a value selected by default. If this is not the case, you can display an error if no value is selected when the form is submitted:
{{ādemoā: āErrorRadios.jsā}}
Here is an example of customizing the component. You can learn more about this in the overrides documentation page.
{{ādemoā: āCustomizedRadios.jsā}}
useRadioGroup
For advanced customization use cases, a useRadioGroup()
hook is exposed.
It returns the context value of the parent radio group.
The Radio component uses this hook internally.
import { useRadioGroup } from '@mui/material/RadioGroup';
value
(object):
value.name
(string [optional]): The name used to reference the value of the control.value.onChange
(func [optional]): Callback fired when a radio button is selected.value.value
(any [optional]): Value of the selected radio button.{{ādemoā: āUseRadioGroup.jsā}}
(WAI-ARIA: https://www.w3.org/WAI/ARIA/apg/patterns/radio/)
All form controls should have labels, and this includes radio buttons, checkboxes, and switches. In most cases, this is done by using the <label>
element (FormControlLabel).
When a label canāt be used, itās necessary to add an attribute directly to the input component.
In this case, you can apply the additional attribute (for example aria-label
, aria-labelledby
, title
) via the inputProps
property.
<Radio
value="radioA"
inputProps={{
'aria-label': 'Radio A',
}}
/>