Rev 3628 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react';import { useForm, FormProvider } from 'react-hook-form';import { Spinner } from '..';export function Form({children,onSubmit,defaultValuesPromise,reset: propReset = false,...rest}) {const methods = useForm();const { handleSubmit, reset } = methods;const [loadingDefaults, setLoadingDefaults] = useState(true);useEffect(() => {let isMounted = true;if (defaultValuesPromise) {setLoadingDefaults(true);defaultValuesPromise().then((data) => {if (isMounted) {reset(data);setLoadingDefaults(false);}}).catch((error) => {console.error('Error al obtener valores por defecto:', error);setLoadingDefaults(false); // Asegúrate de quitar el loading incluso en caso de error});} else {setLoadingDefaults(false);}return () => {isMounted = false;};}, [defaultValuesPromise, reset]);const handleFormSubmit = (data) => {if (onSubmit) {onSubmit(data);}if (propReset) {reset();}};return (<FormProvider {...methods}><form onSubmit={handleSubmit(handleFormSubmit)} {...rest}>{loadingDefaults ? <Spinner /> : children}</form></FormProvider>);}