您需要在要FormikRadioGroup
呈现为 Formik 字段的组件内呈现单选按钮。这样,您实际上可以将 Formik 管理的 props 传递给要使用的组件,并允许RadioGroup
组件确保一次只单击一个按钮。我添加了一个options
props来提供一种传递无线电选项数组的方法,并删除了您在该组件之外渲染的所有元素:
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>
);
};
叉在这里。
编辑:使用渲染函数作为 Field 组件中的子项使用替代示例更新了沙箱。