关于getFieldDecorator校验与onChang的value设置冲突的解决

关于getFieldDecorator校验与onChang的value设置冲突的解决

我所做的是用ant design组件getFieldDecorator校验input输入框的合法性,onChang监听value用以重置按钮重置state。

<FormItem>{
                            getFieldDecorator('total',{
                                rules:[{max:5,message:'不能超过5个字符'},
                                {required:true,message:'不能为空'}],
                                initialValue:this.state.total
                            })(
                            <div><Input value={this.state.total} onChange={(event)=>this.onChange1(event)} ></Input></div>)
                        }
                            </FormItem>

一开始中规中矩添加校验后无法再重置内容,因为getFieldDecorator接管了value,所以内部的失效了,我们可以用initialValue设置初始值,用

包裹从而使onChange生效。

又发现了一种似乎更合理的解决方法

initialValue:model.total?model.total:'',

规则中加入此句也可。

其次,修改form表单时浏览器显示的和state并不是同步变化的,对form表单的读写采用get,set,所以此处重置仅需再次给表单插入一次新的一系列值:

 function reset() {
        setFieldsValue({
         total:'',
         deadline:'',
         year:'',
         quarter:'',
         month:'',
        })                                                                       
      }

达到重置目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值