General
This commit is contained in:
parent
81e59777cb
commit
c99cab0e51
@ -1,5 +1,5 @@
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useEffect } from "react";
|
||||
import { useEffect, useRef } from "react";
|
||||
import { FieldValues, UseFormProps, UseFormReturn, useForm } from "react-hook-form";
|
||||
import * as z4 from "zod/v4/core";
|
||||
|
||||
@ -28,20 +28,40 @@ export function useHookForm<TFields extends FieldValues = FieldValues, TContext
|
||||
|
||||
const {
|
||||
formState: { isDirty },
|
||||
reset,
|
||||
} = form;
|
||||
|
||||
// Evita bucles de reset: guarda última instantánea aplicada
|
||||
const lastAppliedRef = useRef<unknown>(undefined);
|
||||
|
||||
useEffect(() => {
|
||||
onDirtyChange?.(isDirty);
|
||||
}, [isDirty, onDirtyChange]);
|
||||
|
||||
useEffect(() => {
|
||||
/*useEffect(() => {
|
||||
const applyReset = async () => {
|
||||
const values = typeof initialValues === "function" ? await initialValues() : initialValues;
|
||||
|
||||
form.reset(values);
|
||||
};
|
||||
applyReset();
|
||||
}, [initialValues, form]);
|
||||
}, [initialValues, form]);*/
|
||||
|
||||
useEffect(() => {
|
||||
let mounted = true;
|
||||
const apply = async () => {
|
||||
const next = typeof initialValues === "function" ? await initialValues() : initialValues;
|
||||
// Evita reset redundante
|
||||
if (mounted && JSON.stringify(next) !== JSON.stringify(lastAppliedRef.current)) {
|
||||
reset(next as TFields);
|
||||
lastAppliedRef.current = next;
|
||||
}
|
||||
};
|
||||
void apply();
|
||||
return () => {
|
||||
mounted = false;
|
||||
};
|
||||
}, [initialValues, reset]);
|
||||
|
||||
return form;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user