react项目,使用了antd和ProTable,因为某个select数据后端接口同时需要value和name,所以使用了labelInValue属性.
但这直接导致validateField不能校验该字段必填。因为未填写该字段,表单提交的也是个空对象,所以校验不到。
多个阶段console log,我发现第一次进入页面的时候所有校验都会触发 因为这个时候是undefined
但是在选择一个值之后再删除 设置过labelInValue的属性的字段 直接就变成{ }了
于是在onChange的时候 把值恢复成undefined就行了
onChange:()=>{
if(JSON.stringify(formRef1.current?.getFieldValue('select1'))==='{}'){
formRef1.current?.setFieldsValue({'select1':undefined})}
}