Reactjs 设置单选值之前,Antd RadioGroup onChange将触发
我用的是ant设计,我和一个无线电组有麻烦。在我看来,RadioGroup上的onChange处理程序在单击单选按钮时启动,但在设置该单选按钮的值之前启动 下面是一些示例代码Reactjs 设置单选值之前,Antd RadioGroup onChange将触发,reactjs,antd,Reactjs,Antd,我用的是ant设计,我和一个无线电组有麻烦。在我看来,RadioGroup上的onChange处理程序在单击单选按钮时启动,但在设置该单选按钮的值之前启动 下面是一些示例代码 const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { console.log('field value', getFieldValue(name)); // previous value, not changed value.
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
console.log('field value', getFieldValue(name)); // previous value, not changed value.
};
const component =
getFieldDecorator &&
getFieldDecorator(name, {
initialValue: value,
rules: formatValidations(validations)
})(
<RadioGroup name={name} onChange={handleChange}>
<Radio value={1} key={1}>1</Radio>
<Radio value={2} key={2}>2</Radio>
<Radio value={3} key={3}>3</Radio>
</RadioGroup>
);
constHandleChange=(e:React.ChangeEvent)=>{
log('field value',getFieldValue(name));//以前的值,未更改的值。
};
常数分量=
getFieldDecorator&&
getFieldDecorator(名称{
initialValue:value,
规则:formatValidations(验证)
})(
1.
2.
3.
);
运行此handleChange
函数时,字段值错误。第一次单击radio 1时,该值未定义。然后单击2,值为1。换句话说,onChange事件被触发,但是单选按钮的值还没有设置,我只能得到之前设置的值。有人看到我的实现有什么问题吗
另外,e.target.value
是预期的更改值(它与getFieldValue值不匹配)
谢谢如果您想立即获得值,您应该真正使用
e.target.value
。由于在单击收音机时尚未设置该值(到antd表单为止)。(该字段需要传递setStatus、setfeedback等)
如果您真的想使用getFieldValue,可以执行setTime strick
setTimeout(() => console.log(this.props.form.getFieldValue('radio-group')), 0)
antd
支持建议在Form.create()中使用onValuesChange
我找到了适合我的解决方法:
<Radio.Group
onChange={(e: RadioChangeEvent) => {
form.setFieldsValue({ yourRadioFieldNameFromGetFieldDecorator: e.target.value }, () => {
handleChange();
});
}}
>
{
form.setFieldsValue({yourRadioFieldNameFromGetFieldDecorator:e.target.value},()=>{
handleChange();
});
}}
>
回调确保设置了字段值。哪里定义了RadioChangeEvent
?@MarcusJuniusBrutus它是
的onChange
函数的事件参数类型。如果您使用的是VSCode,请右键单击我使用的是Emacs,我没有想象得到的最复杂的设置。你能提供进口声明吗。例如:从“antd”导入{radiochangeent}
不起作用。@MarcusJuniusBrutus这里是从“antd/lib/radio”导入{radiochangeent}