Form表单使用validator时,在function中使用setFieldsValue踩到的坑。
今天在使用Form表单的校验规则时,使用了validator属性。
参数 说明 类型 默认值
validator 自定义校验(注意,callback 必须被调用) function(rule, value, callback) -
由于业务需求,该校验规则需要调取接口,将选择的年份传至后端,如果该年份数据存在,我需要将接口中返回的数据填入Form表单中让用户直接使用或修改。出于投机的原因,我直接在validator校验函数中,使用了this.prop.form.setFieldsValue({...res.data})。数据的确被填入了Form表单,但是在我修改数据后,提交表单时,被修改的数据又还原成了接口返回的数据!
后面才想到,提交表单时,表单再次做了校验!所以validator也被再次调用,表单中的值在被提交之前被重置为接口返回的值了!
(我可真菜...)