验证关键 bug 修复效果
问题:删除数组中间项后,后续项的字段状态路径没有更新,导致验证错误显示在错误的字段上。
Click "Remove Item B" to test
Waiting...
✅ 期望结果: 删除后 items[1] 应该指向 "Item C"(原来的 items[2]),items[2] 应该被删除
问题:当依赖的字段变化时,验证虽然执行了,但没有触发 onFieldChange 事件,导致 UI 不更新。
✅ 期望结果: 修改 minValue 后,maxValue 的错误信息应该立即出现(无需手动 blur)
问题:条件渲染的字段在销毁后没有从 fieldStates 中移除,导致内存泄漏。
Mount Count: 0
Unmount Count: 0
Field States Count: 2
Field Paths: minValue, maxValue
✅ 期望结果: 隐藏字段后,fieldStates 应该减少 1,不应该累积 optionalField
问题:useFormState 订阅的观察者在组件销毁后没有取消订阅,导致内存泄漏。
修复:现在提供 destroy() 方法,用户可以在 onDestroy 中调用。
const form = useFormState({ ... });
// 组件销毁后 observer 仍然存在! import { onDestroy } from 'svelte';
const form = useFormState({ ... });
onDestroy(() => {
form.destroy(); // 取消订阅
});