ant-design-mini icon indicating copy to clipboard operation
ant-design-mini copied to clipboard

formStore.validateAll 校验信息清空问题

Open JserWang opened this issue 2 years ago • 1 comments

  • 具体现象:触发表单校验后,两个必填字段未填,填写其中一个值后,通过 form.setFieldsValue 给另一个值赋值时,通过setFieldsValue 改变的值对应的 FormItem 不会清空已有错误信息。

  • 引起原因: https://github.com/ant-design/ant-design-mini/blob/f510d6207b7cb30a1f22f42947416dc45c09a5ac/src/_util/formStore.ts#L175-L177

  • 临时解决方案:通过 ref 找到对应的 FormItem,手动调一遍 updateErrorInfo('')

  • 期望:

方案1:在validateAll中,当没有errors时,保证该代码始终执行

https://github.com/ant-design/ant-design-mini/blob/f510d6207b7cb30a1f22f42947416dc45c09a5ac/src/_util/formStore.ts#L187

方案2:这里如果为了普通场景的表单校验执行效率的话,可以在Form中暴露出来一个字段校验函数,供使用者手动调用

validateFields: (nameList?: string[]) => Promise

JserWang avatar Apr 21 '22 10:04 JserWang

预计七月份修复

miaodongqing avatar May 30 '22 08:05 miaodongqing

https://github.com/ant-design/ant-design-mini/issues/305

jc9702507 avatar Dec 02 '22 04:12 jc9702507

使用1.0表单组件没有这个问题 https://ant-design-mini.antgroup.com/components/form#%E6%A0%A1%E9%AA%8C

jc9702507 avatar Jan 13 '23 08:01 jc9702507