TDesign 表单重置后为什么校验状态没清除?

闲人鑫鑫 阅读 14

我在用 TDesign 的 Form 组件做表单,调用 form.reset() 之后字段值清空了,但之前校验失败的红色提示和边框还在,这是为啥?

我试过手动 setFieldsValue 清空字段,也试过 reset 后再 validate({ validateOnly: false }),都不行。控制台也没报错,就是 UI 状态没更新。

const onReset = () => {
  form.reset();
  // 甚至加了这行也没用
  // form.clearValidate();
};
我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
设计师洋洋
TDesign 的 reset() 方法默认只把表单数据恢复成初始值,它不管校验状态的 UI(比如红框和错误提示),所以你得手动调一下 clearValidate()

你说加了 clearValidate() 没用,大概率是传参不对,或者调用顺序的问题。直接用下面这段代码,两个方法挨着调用,且 clearValidate 不要传任何参数,这样能清除所有字段的校验状态:

const onReset = () => {
// 1. 先重置数据
form.reset();

// 2. 强制清除校验状态(关键步骤,不传参数清除全部)
form.clearValidate();
};


如果这还不行,检查一下你的 form 实例引用是不是对的,确保它是 Form 组件暴露出来的那个实例。大部分情况下这么写就能解决。
点赞
2026-03-04 15:39