对比三种验证模式:validateOnComplete (智能) vs validateOnChange (频繁) vs validateOnBlur (延迟)
智能检测输入完成,用户体验最佳
每次输入都验证,可能过于频繁
失去焦点时验证,反馈较慢
const form = useFormState({
fields: {
username: {
validator: Validators.compose(
Validators.required(),
Validators.minLength(3),
usernameAvailableValidator // 异步验证
),
validateOnComplete: true,
// 自定义完成条件
completeCondition: (value) => {
return value.length >= 3;
},
// 防抖延迟(毫秒)
debounceMs: 500
},
email: {
validator: Validators.compose(
Validators.required(),
Validators.email()
),
validateOnComplete: true,
completeCondition: (value) => {
// 包含@和.才认为输入完成
return value.includes('@') && value.includes('.');
},
debounceMs: 600
},
phone: {
validator: Validators.pattern(/^\d{11}$/),
validateOnComplete: true,
completeCondition: (value) => {
// 输入满11位才验证
return value.length === 11;
},
debounceMs: 200
}
}
});如果不提供 completeCondition,FormState 使用以下默认规则:
value.trim().length > 0!isNaN(value)value.length > 0value != null