antd中给绑定Form的Radio.Group设置默认值,修改状态 并获value

功能描述:

在一个modal中,根据父组件传过来的data  将表单Rado.group 进行初始化选中,并且能更改radio状态 并获取value值

初始值的设置:

× 思路1:通过form的initialValues属性来设置各个item的初始值,对input 文本类型的起作用,radiogroup无效;

× 思路2:通过form.item中的initialValue属性 ,也是不起作用

×思路3:radioGroup的defaultValue 来设置,对于直接设置的常量 起作用,对于传值过来的变量无效

√思路4:radioGroup 中的value属性来设置 选中值,有效

更改radio状态 并获取value值:

× 思路1:通过value形式 来设置初始值,一开始设置的初始值直接用的是data中的值,导致无法切换radio值,虽然每次都触发onchange方法,原因是:props中的属性是只读的,无法修改。

 <Radio.Group onChange={onChange} value={props.data.radioValue} >               
    <Radio value='1'>1</Radio>                        
    <Radio value='2'>2</Radio>                        
    <Radio value='3'>3</Radio>                  
 </Radio.Group>  

×思路2:既然无法修改props属性,干脆就把onChange方法写在父组件中,在父组件中修改data中的radioValue值,这种方式却是是能够达到初始化值切能切换radio的值,但是随之而来的问题是,每次切换radio都会导致data更新,从而让modal页面中其他已输入好的input中的内容清空

√思路3:通过useState+ form.setFieldsValue 来切换radio 和更改value值,一定要通过setFieldsValue来更改value 不然提交表单的时候 获取到的value值是undefined

 const [radioValue, setRadioValue] = useState(data?.radioValue);  

 const onChange = (e) => {
    form.setFieldsValue({ formItemName: e.target.value });
    setRadioValue(e.target.value)
    return  e.target.value;
  };

<Form.Item
   name="formItemName"
   label="label">      
   <Radio.Group onChange={onChange} value={radioValue} >                                
     <Radio value='1'>1</Radio>                        
     <Radio value='2'>2</Radio>                        
     <Radio value='3'>3</Radio>                  
    </Radio.Group> 
 </Form.Item>
  

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值