展示 FormState 的优化效果和关键 bug 修复
对比批量更新和逐个更新的性能差异(100 个字段)
// ❌ 慢(每次触发验证和UI更新)
for (let i = 0; i < 100; i++) {
form.setValue(`field${i}`, `value${i}`);
}
// ✅ 快(只触发一次)
form.batchUpdate(() => {
for (let i = 0; i < 100; i++) {
form.setValue(`field${i}`, `value${i}`, false);
}
});简单路径跳过 Immer,直接浅拷贝(10x faster)
startDate 依赖 endDate,endDate 依赖 startDate。修复前会无限递归,修复后正常工作。
修复前:验证期间 minPrice 改变会导致错误消息使用错误的值。
修复后:验证使用开始时的 values 快照。