diff --git a/src/__tests__/controller.test.tsx b/src/__tests__/controller.test.tsx index 48092e9bcf7..5cc28664272 100644 --- a/src/__tests__/controller.test.tsx +++ b/src/__tests__/controller.test.tsx @@ -313,7 +313,7 @@ describe('Controller', () => { jest.advanceTimersByTime(1100); }); - expect(validatingFields).toEqual({ test: false }); + expect(validatingFields).toEqual({}); expect(screen.getByText('isValidating: false')).toBeVisible(); }); diff --git a/src/__tests__/useForm.test.tsx b/src/__tests__/useForm.test.tsx index 3f3299ca4fa..d512567c1e8 100644 --- a/src/__tests__/useForm.test.tsx +++ b/src/__tests__/useForm.test.tsx @@ -1787,7 +1787,6 @@ describe('useForm', () => { expect(formState.isValidating).toBe(true); expect(formState.validatingFields).toStrictEqual({ lastName: true, - firstName: false, }); expect(getFieldState('lastName').isValidating).toBe(true); expect(getFieldState('firstName').isValidating).toBe(false); @@ -1798,10 +1797,7 @@ describe('useForm', () => { }); expect(formState.isValidating).toBe(false); - expect(formState.validatingFields).toStrictEqual({ - lastName: false, - firstName: false, - }); + expect(formState.validatingFields).toStrictEqual({}); expect(getFieldState('lastName').isValidating).toBe(false); expect(getFieldState('firstName').isValidating).toBe(false); screen.getByText('stateValidation: false'); @@ -1881,7 +1877,7 @@ describe('useForm', () => { jest.advanceTimersByTime(1500); }); - expect(formState.validatingFields).toStrictEqual({ lastName: false }); + expect(formState.validatingFields).toStrictEqual({}); expect(getFieldState('lastName').isValidating).toBe(false); }); @@ -1954,10 +1950,7 @@ describe('useForm', () => { }); expect(formState.isValidating).toBe(false); - expect(formState.validatingFields).toStrictEqual({ - lastName: false, - firstName: false, - }); + expect(formState.validatingFields).toStrictEqual({}); expect(getFieldState('lastName').isValidating).toBe(false); expect(getFieldState('firstName').isValidating).toBe(false); }); @@ -2002,9 +1995,7 @@ describe('useForm', () => { unregister('firstName'); jest.runAllTimers(); }); - expect(formState.validatingFields).toEqual({ - firstName: false, - }); + expect(formState.validatingFields).toEqual({}); }); it('should update defaultValues async', async () => { diff --git a/src/logic/createFormControl.ts b/src/logic/createFormControl.ts index e253e8faad5..4528dbe39c1 100644 --- a/src/logic/createFormControl.ts +++ b/src/logic/createFormControl.ts @@ -179,16 +179,17 @@ export function createFormControl< const _updateIsValidating = (names?: string[], isValidating?: boolean) => { if (_proxyFormState.isValidating || _proxyFormState.validatingFields) { - (names || Array.from(_names.mount)).forEach( - (name) => - name && set(_formState.validatingFields, name, !!isValidating), - ); - _formState.isValidating = Object.values(_formState.validatingFields).some( - (val) => val, - ); + (names || Array.from(_names.mount)).forEach((name) => { + if (name) { + isValidating + ? set(_formState.validatingFields, name, isValidating) + : unset(_formState.validatingFields, name); + } + }); + _subjects.state.next({ validatingFields: _formState.validatingFields, - isValidating: _formState.isValidating, + isValidating: !isEmptyObject(_formState.validatingFields), }); } };