问题:
我想做的是:
WrapperRadio
组件,它设置Controller
,然后呈现原子RadioButton
组件。然后在RegistrationForm
中使用RegistrationForm
,并希望在单击GetValues或Submit按钮时能够在控制台中看到选定的单选按钮值。示例:
码砂箱
<form onSubmit={onSubmit}>
<WrapperRadio
control={control}
name="radioSelection"
label="This is a label"
/>
...
</form>
return (
<div>
<Controller
control={control}
name={name}
render={({ field }) => <RadioButton {...field} label={label} />}
/>
</div>
);
return (
<fieldset className="max-w-sm">
<input
ref={ref}
id={name}
name={name}
type="radio"
aria-label={label}
{...props}
/>
<label htmlFor={name} className="block text-sm font-medium text-gray-700">
{label}
</label>
</fieldset>
);
发布于 2022-08-21 20:57:53
发布于 2022-08-24 11:13:54
下面是另一种方法,允许将输入的值作为字符串读取,但它的缺点是将onChange放入原子RadioButton组件中(而不是使其处于无状态状态)。
options
是一个由所需的单选按钮回答选项组成的数组,它使WrapperRadio
可重用。
<WrapperRadioGroup
name="radioSelection"
label="This is a radio group label"
control={control}
options={ ["chocolate", "vanilla" ] }
value="ice-cream"
>
通过options
映射,为每个按钮创建一个新的单选按钮标签,并将onChange
传递给原子RadioButton组件。
return (
<>
{/* {label} */}
<Controller
control={control}
name={name}
defaultValue={props.value}
render={({ field: {onChange, ...props} }) =>
options.map((option, index) => (
<RadioButton
key={index}
{...props}
onChange={onChange}
value={option}
label={label}
/>
))
}
/>
</>
)
onChange
用正确的值更新rhf的表单状态
return (
<>
<input
ref={ref}
name={name}
type="radio"
value={value}
aria-label={label}
onChange={ () => props.onChange(props.value) }
{...props} />
<label htmlFor={name}>Radio answer option</label>
</>
)
}
https://stackoverflow.com/questions/73439711
复制相似问题