-
-
Save Klerith/09dede50a8a397231744d4545b771408 to your computer and use it in GitHub Desktop.
| import { useEffect, useMemo, useState } from 'react'; | |
| export const useForm = ( initialForm = {}, formValidations = {}) => { | |
| const [ formState, setFormState ] = useState( initialForm ); | |
| const [ formValidation, setFormValidation ] = useState({}); | |
| useEffect(() => { | |
| createValidators(); | |
| }, [ formState ]) | |
| useEffect(() => { | |
| setFormState( initialForm ); | |
| }, [ initialForm ]) | |
| const isFormValid = useMemo( () => { | |
| for (const formValue of Object.keys( formValidation )) { | |
| if ( formValidation[formValue] !== null ) return false; | |
| } | |
| return true; | |
| }, [ formValidation ]) | |
| const onInputChange = ({ target }) => { | |
| const { name, value } = target; | |
| setFormState({ | |
| ...formState, | |
| [ name ]: value | |
| }); | |
| } | |
| const onResetForm = () => { | |
| setFormState( initialForm ); | |
| } | |
| const createValidators = () => { | |
| const formCheckedValues = {}; | |
| for (const formField of Object.keys( formValidations )) { | |
| const [ fn, errorMessage ] = formValidations[formField]; | |
| formCheckedValues[`${ formField }Valid`] = fn( formState[formField] ) ? null : errorMessage; | |
| } | |
| setFormValidation( formCheckedValues ); | |
| } | |
| return { | |
| ...formState, | |
| formState, | |
| onInputChange, | |
| onResetForm, | |
| ...formValidation, | |
| isFormValid | |
| } | |
| } |
Super, muchas gracias maestro!
gracias profe
eres un crack y bien ordenado, se aprende mucho de tu orden.
Profeeeeee, sin duda alguna eres el mejor, con todos lo cursos que he realizado contigo; estoy creando un proyecto. Cuando lo termine y lo ponga en pruducción, pues veré como lo posteo en tus redes, agradeciendo todos tus conocimientos impartido en cada clase de tus cursos...
gracias muy buen curso
Genial, tienes cuidado de todos los detalles, y si no los escribes, los comentas igual. Tambien creando un proyecto con lo aprendido aqui.
Muchas gracias desde Republica Dominicana, se aprende mucho y me ha dadoo mas seguridad a la hora de trabajar
gracias profe!!
Grande profe!
Muy bueno el curso, Fernando.
¡ Saludos desde Argentina !
Gracias profe!!!!
Muchas gracias!!! eres super cuidadoso y no das nada por hecho y eso es genial!!!