diff --git a/packages/vee-validate/src/useField.ts b/packages/vee-validate/src/useField.ts index 04db029fd..04cdb0974 100644 --- a/packages/vee-validate/src/useField.ts +++ b/packages/vee-validate/src/useField.ts @@ -13,6 +13,7 @@ import { nextTick, } from 'vue'; import { BaseSchema } from 'yup'; +import { klona as deepCopy } from 'klona/lite'; import isEqual from 'fast-deep-equal/es6'; import { validate as validateValue } from './validate'; import { @@ -404,8 +405,8 @@ function useValidationState({ form.setFieldValue(fieldPath, newValue, { force: true }); form.setFieldInitialValue(fieldPath, newValue); } else { - value.value = newValue; - initialValueRef.value = newValue; + value.value = deepCopy(newValue); + initialValueRef.value = deepCopy(newValue); } setErrors(state?.errors || []); diff --git a/packages/vee-validate/src/useForm.ts b/packages/vee-validate/src/useForm.ts index 7b3fe566a..8dba77771 100644 --- a/packages/vee-validate/src/useForm.ts +++ b/packages/vee-validate/src/useForm.ts @@ -192,15 +192,18 @@ export function useForm = Record { valuesByFid[fieldItem.fid] = newVal; @@ -211,10 +214,12 @@ export function useForm = Record( - getFromPath(formValues, field as string) as TValues[T], - value as TValues[T], - unref(fieldInstance.uncheckedValue) as TValues[T] + newValue = deepCopy( + resolveNextCheckboxValue( + getFromPath(formValues, field as string) as TValues[T], + value as TValues[T], + unref(fieldInstance.uncheckedValue) as TValues[T] + ) ); } @@ -492,7 +497,7 @@ export function useForm = Record>( }); function setInitialValues(values: Partial, updateFields = false) { - initialValues.value = { - ...values, - }; + initialValues.value = deepCopy(values); if (!updateFields) { return;