Вы должны визуализировать переключатели внутри компонента FormikRadioGroup
, который вы визуализируете, как поле Formik. Таким образом, вы можете фактически передать реквизиты, которыми управляет Formik, к используемым компонентам, а также позволить компоненту RadioGroup
убедиться, что одновременно нажимается только одна кнопка. Я добавил options
реквизит, чтобы обеспечить способ передачи массива параметров радио, и удалил все элементы, которые вы рендерили за пределами этого компонента:
const FormikRadioGroup = ({
field,
form: { touched, errors },
name,
options,
...props
}) => {
return (
<React.Fragment>
<RadioGroup {...field} {...props} name={name}>
{options.map(option => (
<FormControlLabel value={option} control={<Radio />} label={option} />
))}
</RadioGroup>
{touched[fieldName] && errors[fieldName] && (
<React.Fragment>{errors[fieldName]}</React.Fragment>
)}
</React.Fragment>
);
};
Fork здесь .