Skip to content

Commit

Permalink
馃┐ close #10078 prevent stabled aysnc validation (#10082)
Browse files Browse the repository at this point in the history
  • Loading branch information
bluebill1049 committed Mar 10, 2023
1 parent 7ca5248 commit 867fcfc
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions src/logic/createFormControl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,7 @@ export function createFormControl<
const onChange: ChangeHandler = async (event) => {
const target = event.target;
let name = target.name;
let isFieldValueUpdated = true;
const field: Field = get(_fields, name);
const getCurrentFieldValue = () =>
target.type ? getFieldValue(field._f) : getEventValue(event);
Expand Down Expand Up @@ -744,18 +745,26 @@ export function createFormControl<
)
)[name];

if (error) {
isValid = false;
} else if (_proxyFormState.isValid) {
isValid = await executeBuiltInValidation(_fields, true);
isFieldValueUpdated = fieldValue === get(_formValues, name, fieldValue);

if (isFieldValueUpdated) {
if (error) {
isValid = false;
} else if (_proxyFormState.isValid) {
isValid = await executeBuiltInValidation(_fields, true);
}
}
}

field._f.deps &&
trigger(
field._f.deps as FieldPath<TFieldValues> | FieldPath<TFieldValues>[],
);
shouldRenderByError(name, isValid, error, fieldState);
if (isFieldValueUpdated) {
field._f.deps &&
trigger(
field._f.deps as
| FieldPath<TFieldValues>
| FieldPath<TFieldValues>[],
);
shouldRenderByError(name, isValid, error, fieldState);
}
}
};

Expand Down

0 comments on commit 867fcfc

Please sign in to comment.