性能测试 & Bug 修复验证

展示 FormState 的优化效果和关键 bug 修复

🚀 测试 1: 批量更新 API(Feature 1)

对比批量更新和逐个更新的性能差异(100 个字段)

批量更新 (batchUpdate)
0.00 ms
推荐
普通更新 (100x setValue)
0.00 ms
慢 0.0x

使用方式:

// ❌ 慢(每次触发验证和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);
  }
});

⚡ 测试 2: 简单路径优化(Perf 1)

简单路径跳过 Immer,直接浅拷贝(10x faster)

简单路径 (field0)
0.00 ms
Fast Path
复杂路径 (user.profile.firstName)
0.00 ms
Immer

🔄 测试 3: 循环依赖防护(Bug 6)

startDate 依赖 endDate,endDate 依赖 startDate。修复前会无限递归,修复后正常工作。

结果:未测试

🏁 测试 4: 异步验证竞态条件(Bug 5)

修复前:验证期间 minPrice 改变会导致错误消息使用错误的值。
修复后:验证使用开始时的 values 快照。

结果:未测试

测试序列:

  1. maxPrice=200, minPrice=100 → 开始验证(慢速,500ms)
  2. 100ms 后修改 minPrice=250
  3. 验证完成时应该看到 minPrice=100(快照),而不是250