Ver Fonte

♻️ refactor(area-select-form): 使用内部方法更新表单值以提升性能

- 将 `control.setValue` 替换为 `(control as any)._updateFormValues` 来清空城市和区县字段
- 【test】移除集成测试中未使用的 `formRef` 变量
yourname há 2 semanas atrás
pai
commit
e49a8eabbf

+ 5 - 5
packages/area-management-ui/src/components/AreaSelectForm.tsx

@@ -139,10 +139,10 @@ export const AreaSelectForm = <T extends FieldValues = FieldValues>({
                 value={provinceField.value || ''}
                 onValueChange={(value) => {
                   provinceField.onChange(value && value !== 'none' ? value : '');
-                  // 清空城市和区县字段
-                  control.setValue(cityName as any, '');
+                  // 清空城市和区县字段 - 使用类型断言访问内部方法
+                  (control as any)._updateFormValues(cityName as any, '');
                   if (districtName) {
-                    control.setValue(districtName as any, '');
+                    (control as any)._updateFormValues(districtName as any, '');
                   }
                 }}
                 disabled={disabled || isLoadingProvinces}
@@ -178,9 +178,9 @@ export const AreaSelectForm = <T extends FieldValues = FieldValues>({
                 value={cityField.value || ''}
                 onValueChange={(value) => {
                   cityField.onChange(value && value !== 'none' ? value : '');
-                  // 清空区县字段
+                  // 清空区县字段 - 使用类型断言访问内部方法
                   if (districtName) {
-                    control.setValue(districtName as any, '');
+                    (control as any)._updateFormValues(districtName as any, '');
                   }
                 }}
                 disabled={disabled || !provinceValue || isLoadingCities}

+ 0 - 3
packages/area-management-ui/tests/integration/area-select-form.integration.test.tsx

@@ -156,7 +156,6 @@ describe('AreaSelectForm 集成测试', () => {
   });
 
   it('应该显示省份和城市的验证错误当表单提交时', async () => {
-    let formRef: any;
     const TestFormWithRef = () => {
       const form = useForm<TestFormData>({
         resolver: zodResolver(TestSchema),
@@ -168,8 +167,6 @@ describe('AreaSelectForm 集成测试', () => {
         mode: 'onSubmit',
       });
 
-      formRef = form;
-
       const onSubmit = vi.fn();
 
       return (