Formularios en React Hook: domina el manejo de formularios en React | Faisal Memon | Skillshare
Buscar

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Formularios en React Hook: domina el manejo de formularios en React

teacher avatar Faisal Memon, Product | Engineer | Entrepreneur

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción al curso

      1:45

    • 2.

      Primeros pasos: formularios en React simplificados

      15:27

    • 3.

      Resolución de problemas: errores comunes en formularios básicos de React

      10:39

    • 4.

      Libera el poder: profundiza en React Hook Form

      14:09

    • 5.

      Información en tiempo real: monitorea los valores de los formularios con React Hook Form

      8:32

    • 6.

      Experiencia de usuario perfecta: agrega validaciones en forma de hook en React

      16:25

    • 7.

      La velocidad es importante: compara el rendimiento de formularios básicos y React Hook Form

      4:30

    • 8.

      Restablece y actualiza: domina la gestión del estado de formularios

      3:30

    • 9.

      Feedback personalizado: crea validaciones personalizadas en React Forms

      9:03

    • 10.

      Más allá de lo básico: implemente validaciones personalizadas sofisticadas

      15:28

    • 11.

      Conclusión del curso

      2:06

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

40

Estudiantes

--

Proyecto

Acerca de esta clase

Domina los formularios de Hook en React: ¡simplifica el manejo de formularios en React!

Los formularios son una parte esencial del desarrollo web y gestionarlos de manera eficiente es crucial. En este curso, "Domina los formularios en React Hook", aprenderás a manejar formularios en React con facilidad con React Hook Form, una biblioteca potente y flexible que simplifica la gestión de formularios.

Lo que vas a aprender:

  • Los fundamentos de las formas en React y los problemas comunes que se enfrentan con las formas básicas.
  • Cómo configurar y usar React Hook Form para mejorar el manejo de formularios.
  • Implementa y observa valores de formularios de forma dinámica.
  • Agrega y gestiona validaciones personalizadas básicas y avanzadas.
  • Compare el rendimiento entre formularios básicos y React Hook Form.
  • Mejores prácticas para restablecer formularios y mantener un rendimiento óptimo.

Al final de este curso, serás competente en el manejo de formularios en React, capaz de crear experiencias de formularios robustas y fáciles de usar para tus aplicaciones.

Conoce a tu profesor(a)

Teacher Profile Image

Faisal Memon

Product | Engineer | Entrepreneur

Profesor(a)

Hey - this is Faisal and thanks for being here.

I have over 12 years of experience working as a Product Manager Founder/CEO Engineer in Mobile and App development industry. I have been building global products being used by millions of users across the globe since the beginning of my career.

Currently I am heading Product at one of the fast-paced startup in India and enjoying every moment of it. Prior to his, I built out couple of startups which had over half a million users across the globe, raised funding from Google other investors and was part of Google Launchpad Accelerator. I have experience of building products from scratch and scaling to global users.

I am here on Skillshare to share my knowledge with seekers and help them grow personally and professional... Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción al curso: Bienvenido a este curso sobre mastering react Hook forms. Soy Fazal, y estoy emocionado de ser una guía en este viaje en el que aprenderíamos cómo puedes manejar formas de manera efectiva en reaccionar Ahora, la gestión de formularios puede ser compleja y una tarea tediosa, y por eso estoy encantada presentarte para reaccionar Hook form, que es una herramienta que revoluciona A lo largo de este curso, exploraremos todo, desde formularios básicos hasta técnicas avanzadas de validación y haciendo que su manejo de formularios sea más ágil y efectivo. Cubrir muchas cosas como introducción a las formas en reaccionar. Hablaremos de formas de gancho de reacción, básico en el que cubriremos los aspectos esenciales de la gestión de formularios con react hook form y cómo funciona esta biblioteca llamada react Hook También entenderemos las técnicas de validación y cómo puede implementar validaciones robustas Aprenderemos sobre las mejoras en el rendimiento, y te puedo asegurar que al final de este curso, tendrás todas las herramientas y conocimientos para crear formas poderosas y fáciles de usar en reaccionar. Para quién es este curso? Por lo que este curso es perfecto para cualquiera que esté buscando elevar sus habilidades de reacción. Ahora bien, si eres principiante o alguien que está apuntando a profundizar tus conocimientos o gestión de formularios en reaccionar, para que todos puedan beneficiarse de este curso en particular Este curso es completamente manos a la obra, y sea lo que sea que estemos aprendiendo, lo estaremos aprendiendo echando un vistazo a ejemplos en real. Así que estoy súper emocionada de llevarte a este emocionante viaje. Espero que también estés emocionado, y te veré del otro lado. 2. Primeros pasos: formularios en React simplificados: Entonces ahora es el momento de que voy a hablar sobre los formularios y cómo se pueden administrar los datos del formulario en reaccionar. Entonces lo que vamos a hacer es que vamos a crear un formulario básico y aprenderemos sobre los meollos de la gestión de formularios o la gestión de datos con Formularios Entonces aquí tengo un proyecto de trigo de reacción muy simple, pueden ver, y es un código muy simple. El repetidor inicial, he hecho un poco de limpieza en la app JSX, como pueden ver, ¿bien? Y app.j6 se está renderizando en punto medio Jx por aquí con el modo estricto Cierra esto. Y aquí tengo un CSS, que es CSS muy básico. No es mucho. Estoy poniendo el margen a cero píxeles para todos, y luego para Dev estoy agregando flex la pantalla de flex justificando todo al centro. Todo bien. Así que voy a cerrar esto y nos centraremos en app.j6. Bien. Tengo el servidor funcionando y se puede ver la salida en el lado derecho. ¿Todo bien? Ahora, lo que voy a hacer es que voy a agregar un campo de entrada muy simple, y vamos a construir sobre eso. Todo bien. Entonces lo que haría aquí está aquí. ¿Bien? Diré formulario, o porque el campo de entrada tiene que estar dentro de la etiqueta Fm, ¿de acuerdo? Entonces esta es nuestra etiqueta Fm, bien. Y voy a decir en enviar por aquí, en someter, tenemos que presentarlo en alguna parte. ¿Bien? Entonces necesitamos tener una función que se encargue de la presentación. Pero por ahora, voy a mantener esto vacío y luego rellenaré ese lugar. Voy a añadir una etiqueta por aquí, bien. Y la etiqueta será nombre. Bien. Déjame ver si esto vaya. Voy a recibir un error. Entonces déjame agregar esa función también porque no vamos a ver la salida, así que voy a decir manejar enviar por aquí, enviar algo como esto. Y por aquí dentro del componente, voy a decir const, manejar submit, algo así, y voy a tener una función de flecha mt aquí, agregó Bien. Entonces no pasa nada a partir de ahora, ya que necesitamos definir la lógica de cómo funcionaría la sumisión. Bien. Ahora bien, esta etiqueta está ahí, ¿de acuerdo? Tenemos la etiqueta de cierre de etiqueta, y voy a agregar una entrada por aquí. Bien. Y voy a decir que la entrada es de tipo texto. ¿Bien? Entonces el tipo es texto por aquí, y voy a decir nombre es nombre por aquí. Bien. Entonces esto tiene comillas simples simples son mejores tener la consistencia por aquí. Este es el nombre. Voy a tener valor por aquí. Ahora ¿qué es el valor? Valor, necesitamos asignar. Bien, entonces voy a tener cero por aquí, algo como esto. Bien. Pero este no es el nombre real. Tenemos que vincularlo a algo o este si creamos. ¿Bien? Entonces voy a decir sobre el cambio, necesitamos tener manejar el cambio por aquí. ¿Bien? Entonces sobre el cambio, ¿qué pasa? Voy a mencionar eso también. ¿Bien? Ahora, voy a tener por aquí y voy a decir manejar el cambio. Algo así. Bien. Entonces aquí tengo, ya sabes, este campo que se ha agregado, ¿de acuerdo? Ahora lo que estoy haciendo es que estoy haciendo uso de este valor valor, lo que hace es que unirá el valor inicial por aquí. On change activará el evento onchange si hay algún cambio en este campo en particular, ¿de acuerdo? Y ahora mismo estoy enlazando como en el cambio, llamar a esta función particular manejar cambio. Y esta es una función que va a manejar el cambio por nosotros, ¿de acuerdo? Podemos tener algo de lógica por aquí, ¿de acuerdo? Entonces en el cambio de manejo, lo que puedo hacer es aceptar el objeto de evento de aquí. Bien. Y puedo decir que el registro de puntos de consola por aquí, ¿de acuerdo? Y puedo decir E punto objetivo valor punto. Bien. Y por aquí, si entro, bien, creo que esto debería estar bien ahora mismo. Déjame guardar esto. Déjame dirigirme a inspeccionar. Deberíamos ver el registro como y cuando estamos básicamente como y cuando estamos escribiendo. Entonces voy a hacer una actualización dura para que desaparezca todos los errores. Bien. Y sólo voy a decir, para que veas, estoy escribiendo cosas. ¡Uy! Entonces básicamente, esto tiene un valor de cero, básicamente. Entonces eso es un problema por aquí. Si comento esto, déjame comentarlo. Bien. Y ahora si escribo, bien, puedo decir que me encanta. Se puede ver reaccionar. Se puede ver cómo se está activando. Así que está imprimiendo todo cada vez que escribo en cada pulsación de tecla por aquí. ¿Bien? Entonces eso es lo que está pasando por aquí. Ahora valor por aquí que he comentado, bien, es un atributo para entrada que controla qué texto se muestra dentro del campo de entrada. ¿Bien? Entonces si lo vinculo a cero, si digo cero por aquí, verás cero por aquí, como estábamos viendo. Y normalmente el campo de valor suele usarse para vincular un campo en particular a una variable de estado. ¿Bien? Aún no tenemos una variable de estado creada, que vamos a estar creando en el momento, pero por eso se está usando value y lo he comentado hasta que tengamos el estado de variable que se está creando, ¿de acuerdo? Al cambiar por aquí, lo que hace es un manejador de eventos que rastrea el cambio en el campo de entrada Entonces, cada vez que el usuario ingresa o edita la entrada, se activa la función de cambio, lo que le permite actualizar el estado con el nuevo valor de entrada ¿Bien? Entonces aquí, ahora mismo, todavía no estamos jugando con Estado, pero lo que estamos haciendo está en el cambio, estamos viendo manejar el cambio, y esta función se activa cada vez que hay algún cambio en el campo de entrada. Y ¿qué estamos haciendo en manejar el cambio? Estamos aceptando el objeto evento, y estamos diciendo et target dot value, que nos está dando el valor que hay en el campo de texto, ¿bien? Entonces E básicamente representa el objeto de evento que se pasa a la función cuando ocurre el evento, y el evento puede ser cualquier cosa como hacer clic en un botón o escribir en un campo. Eso es algo básico en cuanto a cómo está funcionando este código hasta el momento. ¿Bien? Ahora, lo que vamos a hacer es que necesitamos atar todo a un estado. Entonces voy a decir const voy a decir datos de formulario. Entonces esto es stat que estoy creando y los datos del formulario básicamente me van a ayudar a almacenar los datos para todo el formulario. Entonces podría haber múltiples campos en el formulario. Ahora mismo estamos teniendo campo único. Podríamos tener múltiples campos, y podríamos tener o podríamos hacer uso de los datos del Formulario para almacenar todo. ¿Bien? Entonces voy a decir datos de formulario por aquí. Y lo que voy a hacer ahora es que voy a hacer uso del estado de uso por aquí, usar estado, algo así, y voy a inicializar esto a algo Bien. Entonces por aquí, voy a tener un objeto. Lo inicializaré para objetar, y haré uso de pares de valores clave Bien. Entonces esto estará vacío. El nombre estará vacío. Si mañana hay varios campos encima así que me aseguraré de actualizar este objeto por aquí. ¿Bien? Espero que esto tenga sentido. ¿Bien? Entonces este es el nombre de aquí, y lo tendré de esta manera. ¿Bien? Entonces esto me queda mejor. Bien. Así que sí, esto es datos de formulario por aquí, y ahora lo que tenemos que hacer es lo que yo haría, yo diría sobre el cambio de manejo, ¿de acuerdo? Estamos teniendo el valor por aquí, et valor objetivo, valor de punto objetivo. ¿Bien? Entonces lo que voy a hacer es llamaré set Form data. Porque en cada cambio, quiero asegurarme de que la variable de estado tenga los datos actualizados. Por aquí, voy a decir datos de formulario. Entonces deestructure primero los datos del formulario, cualesquiera que sean los datos que tenga, agregue eso ¿Bien? Y entonces lo que haces es agregar corchetes, haces e punto objetivo nombre de punto por aquí, bien y agregas dos puntos y dices E punto objetivo valor de punto. Vaya, valor. Bien, este tipo de sugerir no es bueno, pero punteó el valor de punto objetivo y voy a agregar por aquí. ¿Bien? Ahora bien, lo que hace esta función es o esta pieza de código hace está por aquí. Entonces esto queda claro cuando a esto se le llama cambio de mango. Siempre que cambies algo en el campo, se llama a cambio de mango. Pasa el objeto evento, que tiene los detalles de todo el evento, ¿verdad? Entonces, lo que estamos haciendo aquí es que estamos viendo datos de formulario establecidos. Bien, desestructurar los datos actuales del formulario. ¿Bien? Entonces con este operador de spread, estamos diciendo mantener los valores existentes datos del formulario, por lo que se propaga por sí mismo. ¿Bien? Y entonces estamos recibiendo el nombre del campo por aquí. Ahora nombre está por aquí si te desplazas hacia abajo, es nombre, derecho, que también es el atributo de aquí, ¿verdad? El atributo y esto deberían coincidir aquí. Nombre y este nombre deben coincidir con la clave de aquí, ¿verdad? Entonces esto es coincidente. Entonces estamos viendo E punto objetivo nombre de punto colon e punto objetivo valor de punto. ¿Bien? Entonces se convierte en el nombre colon, sea cual sea el valor que escribas, ¿de acuerdo? Y cuando se agrega esto, lo que sucede es el campo que ha cambiado porque este es un campo del que estamos hablando. El campo que ha cambiado será reemplazado dentro estos datos esparcidos por aquí. Eso es lo que va a pasar. Establecer datos del formulario siempre escogerá los datos más recientes que existen y actualizará el estado del formulario. Probemos esto si esto está funcionando bien. Voy a hacer duro refrescar. Bien. Y lo que voy a hacer es , bien, en realidad estamos haciendo uso de datos de formularios. ¿Bien? Lo que podemos hacer es por aquí, todavía no estamos haciendo uso del Estado. ¿Bien? Entonces lo que haríamos es que si te desplazas hacia abajo, no estamos viendo ningún tipo de error por aquí. Aquí en el valor. Déjame descomentar esto Ahora tenemos A estado, ¿verdad? Entonces puedo decir el nombre del punto de datos del formulario, algo así. Ahora estamos vinculando esto a una variable de estado, básicamente. Si actualizo, no ves ningún tipo de error, y puedes escribir. Entonces se puede decir prueba. Se puede ver todo entrando en la consola. Aquí, en lugar de imprimir el valor de punto objetivo de punto e punto, lo que podemos hacer es intentar imprimir datos de formulario punto Nombre por aquí. Bien. Vamos a hacer duro refrescar, y luego se puede decir prueba. Se puede ver cómo están entrando los datos actualizados. Bien, entonces esto es un paso atrás, escribimos T y T no ha entrado porque la actualización para T se está haciendo después de que se imprima el valor ¿Bien? Entonces, si mueves esta línea después de que estés actualizando el estado por aquí. Bien, entonces en ese caso, vas a ver lo último. ¿Bien? Entonces si digo prueba, ya se puede ver, vaya, sigue siendo lo mismo por aquí Bien, entonces es porque las actualizaciones son asincrónicas, ¿bien? Y en realidad estás en la misma función. Estás tratando de imprimirlo en la consola, ¿de acuerdo? Pero el estado se está actualizando perfectamente, ¿de acuerdo? No hay ningún problema como tal, así que por ahora me desharé de este registro de puntos de consola, ¿de acuerdo? Ahora, manejemos la sumisión por aquí. Bien. Entonces, ¿qué pasa cuando envías el formulario? Todo bien. Ahora cuando envíes el formulario, primero diremos E dot evitar default. Bien. Ahora, ¿qué es E por aquí? No estamos aceptando E, así que necesitamos aceptar al padre lo siento, necesitamos aceptar el parámetro de tipo E de nombre E, que es evento. Diré prevenir default, estamos haciendo esto porque no queremos el comportamiento predeterminado por aquí. Entonces, el comportamiento predeterminado al enviar en los navegadores es la página recargas. No quiero eso. ¿Bien? Así que simplemente voy a hacer consola dot log. Voy a decir datos de formulario enviados. Por aquí, y por aquí, datos de formulario, algo así. Bien, hiciste esto, y ahora, si te desplazas hacia abajo por aquí, bien, necesitamos agregar una forma por aquí para que la gente envíe el formulario. Entonces lo que voy a hacer es aquí al final, voy a tener un botón. Bien, voy a llamar a esto como botón enviar, y el tipo de este botón es enviar. ¿Bien? Algo así. Déjame refrescarme por aquí, S y refrescar. Todo bien. Y podemos ver nombre es me encanta reaccionar. ¿Bien? Déjame someterme. Se pueden ver los datos del formulario y se puede ver que la variable de estado está actualizada. Se puede ver nombre es me encanta reaccionar. Todo bien. Así que sí, está funcionando absolutamente bien, como puedes ver por aquí, ¿de acuerdo? ¿Cómo es este estado, qué es este estado? ¿ Qué hace este estado? Este estado está haciendo un seguimiento de los datos que existen en la forma, o y estamos haciendo uso del objeto, que consiste en pares de valores clave, ¿verdad? ¿Y cómo es hacer un seguimiento de los datos? Está realizando un seguimiento con la ayuda del cambio en el mango. Entonces, el cambio en el mango se activa en el evento de cambio, ¿de acuerdo? Entonces cada vez que hay algún cambio en el cuadro de entrada, se activa el cambio de mango, y básicamente está actualizando esta cosa por aquí. Básicamente se trata de actualizar los datos del formulario por aquí. Se puede ver. Y los datos del formulario siempre tendrán lo último con lo que sea que escribas estará ahí en los datos del formulario, ¿bien? Y luego está manejando la presentación. ¿Cómo se maneja el envío? Es cada vez que se golpea esto, se trata de prevenir default, y es simplemente imprimir el valor actualizado en los datos del formulario. Bien. Veamos cómo va a funcionar esto si tienes un campo más por aquí. Bien. Ahora bien, si tienes un campo más, déjame duplicar esto de aquí. Voy a tener esto. En vez de nombre ahora tengo correo electrónico por aquí, ¿de acuerdo? Y el tipo es correo electrónico. Bien. Diré correo electrónico. El nombre también es correo electrónico por aquí, formulario datos punto correo electrónico por aquí, y manejar el cambio es el mismo. ¿Bien? Formar datos punto email, así que necesitamos agregar un valor más por aquí, ¿verdad? Entonces voy a decir aquí. Diré coma y agregaré correo electrónico, algo así. Bien, esto está hecho, y lo haré de esta manera. Todo bien. Entonces esto está hecho, ¿verdad? Ahora también tengo correo electrónico. Ahora hagamos una actualización dura, y puedo escribir iOveract voy a decir john a rate Vaya, example.com. Déjame someterme. Momento que presento, verás el nombre es ove reaccionar, y el correo electrónico es jon a tasa example.com Espero que esto tenga sentido. Ahora bien, el número de campos que tienes, el número de atributos que vas a agregar en este objeto de estado por aquí, ¿de acuerdo? Entonces estos datos de este formulario harán el trabajo de manejar todos los datos del formulario por ti, ¿de acuerdo? Y estas dos funciones te ayudarán a administrar los datos, bien, cómo funciona el envío, cómo funciona el cambio, y todo. ¿Bien? Y la forma puede seguir creciendo de vez en cuando, ¿verdad? Entonces espero que hayas podido seguirlo, y espero que esto haya sido útil. 3. Resolución de problemas: errores comunes en formularios básicos de React: Entonces ahora es el momento de que empecemos a mejorar esta forma que hemos construido, ¿verdad? Y vamos a agregar algún tipo de validaciones en esta forma en particular, Porque, ya sabes, cuando estamos trabajando con formularios, las validaciones de formularios son comunes, y es posible que quieras validar los datos que el usuario está rellenando en los formularios, ¿verdad? usuario está rellenando en los formularios, Entonces eso es lo que vamos a hacer. Entonces lo que voy a hacer aquí es que voy a tener una función por aquí, definida, ¿de acuerdo? Voy a decir const, valide. Bien. Y así esta función de validar es una función de flecha por aquí y voy a tener la lógica dentro de esta función. Entonces lo que voy a hacer es que voy a hacerlo primero. Entonces la validación nos va a dar errores, y es posible que queramos hacer un seguimiento de los errores. Entonces primero, voy a decir const por aquí. Voy a crear un estado llamado errores, y voy a llamar a set errors. Bien. Ahora bien, esto nos va a ayudar a hacer un seguimiento de todos los errores que están pasando por aquí, ¿de acuerdo? Voy a inicializarlo para vaciar pares de valores clave, ¿de acuerdo Y dentro validar lo que voy a hacer es crear nuevos errores const, y voy a crear un objeto par de valores clave vacío, ¿de acuerdo? Todo bien. Y ahora lo que voy a hacer es decir si voy a ver los datos del formulario. Necesito verificar si el nombre es llenado por el usuario o no. Quiero hacer nombre como el obligatorio llenado. Entonces voy a decir datos de formulario nombre punto punto Trim. Bien. Si este valor no existe, entonces voy a añadir una exclamación Si este valor no existe, eso es lo que esta condición está comprobando. Diré nuevos errores nombre de punto, y diré que se requiere nombre. ¿Bien? Entonces voy a decir que se requiere nombre, algo así. Todo bien. Y lo que haría es devolvería nuevos errores. Bien. Entonces devolvería nuevos errores, ¿ verdad? Algo así. Entonces esta función, lo que hace es crear mensajes de error. Se trata de validar y crear mensajes de error y devolvernos el par de valores clave o debería decir Entonces aquí, lo que está sucediendo son nuevos errores nombre de punto. Entonces esto va a tener un atributo name con este mensaje. Pero nos está dando un objeto esencialmente con todos los mensajes de error, y la clave es básicamente el nombre del campo de aquí, que es el campo name. Entonces aquí puedes ver este es el campo de nombre. ¿Verdad? Ahora bien, lo que tenemos que hacer es que tenemos que activar esta validación por aquí. ¿Bien? Ahora bien, ¿cuándo debemos activar validar? Entonces veremos en manejar enviar. ¿Bien? Voy a decir const, errores de validación Bien, los errores de validación son iguales a validar, ¿de acuerdo? Algo así. Todo bien. Y voy a decir si voy a tener que verificar si los errores de validación tienen algún par de valores clave. Entonces voy a decir objeto enseñado claves. Entonces, si las claves de punto de objeto para errores de validación, bien. La longitud enseñada es mayor que cero aquí. Bien. Entonces lo que tenemos que hacer es decir realmente los errores establecidos. Bien, voy a establecer errores, y voy a decir errores de validación. Así. Bien. De lo contrario, lo que haremos es enviar el formulario, ¿verdad? Si no hay error de validación, entonces necesitamos enviar el formulario. Entonces, ¡Uy! Así que solo voy a tener esta cosa por aquí y voy a cortar esto y voy a mover esto dentro del bloque se porque el formulario solo necesita ser enviado cuando no hay errores de validación. ¿Bien? Algo así. Está hecho. Bien. Y si, creo que esto es todo. También necesitamos mostrar los mensajes de error. ¿Bien? Así que me desplazaré hacia abajo por aquí. Bien. Y aquí, justo al lado del nombre, ¿de acuerdo? Justo al lado de nombre en el cambio de manija. Bien, voy a tener algún código por aquí. Voy a decir errores tensos, nombre por aquí. Si los errores punto nombre, y voy a hacer uso de lógica y, y voy a decir span y voy terminar la etiqueta span por aquí y voy a decir errores, Tt, nombre, algo así. Bien. Entonces ahora si hay algún error, se mostrará por aquí, ¿de acuerdo? Entonces esto se muestra sólo si esto es cierto. Si los errores nombre de punto existen sólo entonces esto se muestra. De lo contrario, no se muestra. ¿Bien? Si presento esto, no estoy viendo nada en este momento. Entonces no está funcionando probablemente porque creo que he cometido un error por aquí en trim. Así que trim es básicamente una función. Extraño este preceso de ronda abierta y de cierre. Bien. Déjame refrescarme. Y si digo enviar, verás que se requiere nombre. Todo bien. Y se está mostrando de una manera rara porque literalmente no hay CSS que esté usando. Bien, CSS muy básico. Pero entiendes cómo funciona esto, ¿de acuerdo? Puede agregar CSS según su elección si lo desea. Todo bien. Entonces lo que puedo hacer es por aquí en lapso, puedo decir estilo por aquí, aquí mismo. Puedo decir dentro de esto, puedo decir color, correcto. Así. Bien, entonces puedes ver que ahora es de color rojo, ¿verdad? Y, sí, tienes los errores que se muestran, bien, por aquí. Para ajustar cosas en nueva línea o tener un salto de línea por aquí, lo que puedo hacer es después de renderizar el elemento span, puedo agregar una etiqueta de salto de línea por aquí así. Bien. Entonces esto asegurará que las cosas estén en la nueva línea, derecha, y el mensaje de error se muestre de esta manera. Pero puedes ver cómo se requiere nombre se entra, y puedo escribir. Puedo decir prueba, y puedo ver enviar. ¿Bien? Uy, sigue ahí. 1 segundo Déjame revisar. Entonces prueba. Esto está funcionando bien. Y si me deshago de esto, bien, esto no está ahí. Y entonces si tecleo, esto sigue ahí. Entonces esto no se está limpiando es porque los nuevos errores o el estado de error de aquí no se está borrando. Bien, entonces no estamos actualizando ya que tecleo los datos, ¿no? Entonces lo que tenemos que hacer es aquí en manejar el cambio, bien, ya que estamos escribiendo los datos o en manejar enviar. Bien, así que es mejor que me encargue de esto en el cambio de mango por aquí. Entonces aquí en manejar el cambio, lo que voy a hacer es crear un concepto por aquí. Bien, y voy a tener valor de nombre. Bien. Y voy a decir e punto objetivo. ¿Bien? Entonces lo que estoy haciendo es que estoy obteniendo el nombre del campo y el valor o donde está ocurriendo el cambio. ¿Bien? Eso es lo que estoy haciendo aquí con esto, ¿de acuerdo? Y luego después de que se hayan establecido los datos del formulario, voy a decir bien si hay algún valor para errores y nombre, Bien, donde está ocurriendo el cambio. Bien. Entonces en ese caso, digamos const nuevos errores, o y voy a desestructurar los existentes, bien. Reestructurar los existentes. Todo bien. Y entonces lo que podemos hacer es decir eliminar nuevos errores, y voy a decir nombre. Bien. Eso es un poco de manejo por aquí. ¿Bien? Y voy a decir set errors, y voy a establecer el nuevo objeto error, voy a decir nuevos errores. Así. Bien. Esto está hecho. Y ahora a medida que cambiemos, verás que se está borrando el error. ¿Bien? Si me deshago de esto y si digo enviar, se requiere nombre, y si digo me encanta reaccionar, el error se ha ido. Se puede ver lo dinámico que es esto. Bien. Puedes actualizar esto y mejorarlo para otros campos también. Pero para este campo único, también tenías tanto trabajo, ¿verdad? Así que puedes imaginar cómo las validaciones pueden llegar a ser complejas por aquí Bien. Entonces, el objetivo aquí de hacer todo esto y mostrártelo era mostrarte cómo se pueden construir formas reaccionan sin hacer uso de ningún tipo de biblioteca por aquí, como formas de gancho, ¿de acuerdo? Entonces, si estás manejando formularios por ti mismo en react, esto es todo lo que tendrás que hacer, ¿de acuerdo? Se puede ver como un formulario con sólo dos campos que tenía tanto que escribir. Hay muchas duplicaciones de código, ¿verdad? Entonces, para múltiples campos, la función de cambio de mango crecerá en tamaño, ¿verdad? Habrá mucho código ahí dentro. Para la validación, hay que agregar más validaciones, Entonces, por ejemplo, por aquí, estamos agregando validación en la función validate para name, ¿de acuerdo? También es necesario agregar validación similar para correos electrónicos. ¿Bien? Ahora, envía un correo electrónico si quieres agregar algún tipo de validación compleja, como quieres verificar, agregar la tasa y el formato de correo electrónico, tendrás que escribir todo eso. Bien. Entonces agregará mucha complejidad por aquí. Este método también crecerá, ¿bien? Y con muchos campos, imagina cómo se convertirá la re renderización, ¿ verdad? Se volverá complicado. Entonces sí, así que ese es el problema que quiero destacar por aquí. Bueno, un enfoque habría sido mostrarte directamente haciendo uso de formas de gancho de reacción y explicándote lo fácil que es usarlo, ¿de acuerdo? Pero yo quería pasar primero por la vía dura, ¿de acuerdo? Entiende esto primero en cuanto a cómo se están manejando las cosas en reaccionar usando JavaScript. Bien. Así que también estoy haciendo uso del código JavaScript y reacciono características como estados por aquí. ¿Bien? Cómo se están manejando las cosas en reaccionar usando JavaScript. Bien, eso necesitas entender primero. Sólo entonces entenderás la importancia. Entonces, si pasas por esto, solo entonces entenderás la importancia de hacer uso de formularios de gancho de reacción o alguna otra biblioteca, ¿verdad? Entonces eso es algo que quería destacar. Todo bien. Entonces espero que tengas una idea de cómo puedes hacer validaciones, manejar envíos y administrar los mensajes de error con react y mensajes de error con react 4. Libera el poder: profundiza en React Hook Form: Oye, ahí. Entonces ahora es el momento de que comencemos a hablar de reaccionar Hook formas. Entonces, si buscas en Google React Hook, serás llevado a esta página web, o encontrarás este enlace en google.com o cualquier motor de búsqueda favorito de tu elección Así reacthokfm.com. Este es el sitio web de aquí. Asegúrese de tomar nota de los guiones de aquí. ¿Bien? Ahora bien, esto es lo que vamos a usar aquí, y puedes ver que es una solución flexible, extensa, fácil de usar extensa, fácil de usar con validación para formularios de reacción. ¿Todo bien? Hay un montón de características que destacan por aquí. También tienen una versión de código sandbox por aquí para que edites y juegues, ¿de acuerdo? Y se pueden ver las características, aísla el render. Así que hay minimización de renderizado, ¿de acuerdo? Te suscribes, ¿de acuerdo? Por lo que el rendimiento es un aspecto importante de la experiencia del usuario. Así puedes suscribir campos de entrada individuales sin volver a renderizar todo el formulario, ¿bien? Entonces por aquí, es una cantidad rápida. Por lo que proporciona una gran cantidad de beneficios en comparación con la gestión de formularios tradicional y React. Y si vas a empezar, encontrarás algunos fragmentos de código por aquí. ¿Bien? Entonces puedes usarlo para JavaScript, mecanografiado, bien, dependiendo de tu requerimiento Todo bien. Así que seleccionaré JavaScript por aquí porque estás haciendo uso de react. Y aquí, puedes instalarlo de esta manera. Entonces es una biblioteca externa que estás usando y usando el administrador de paquetes de NPM, puedes instalarla en tu sistema y agregarla a tu proyecto aquí Bien. Ahora, aquí hay algunas cosas que debes tener en cuenta en cuanto a cómo funciona. Entonces lo primero es si tienes un formulario creado, Bien. Lo primero es que necesitas importar este gancho. Bien, necesitas agregar este gancho. Entonces necesitas obtener estas funciones dependiendo de lo que quieras, acuerdo? Así registrar la función. Hay diferentes funciones que obtienes del formulario de uso y el formulario uso que obtienes de la forma de gancho de reacción por aquí. Bien. Ahora, registrarse es algo que le permite registrar un elemento de entrada o cualquier tipo de elemento básicamente para reaccionar formas de gancho. Y cuando te registres, lo que pasa es la validación y todo se gestiona, incluso el envío se gestiona mediante formularios de gancho de reacción. ¿Bien? Entonces registrarse es una forma de decirle formularios de gancho de reacción que administren ese elemento en particular por usted dentro del formulario, ¿de acuerdo? También maneja el envío. Así que aquí tienes manejar enviar como puedes ver, y manejar enviar toma cualquier función de tu elección que pases en. ¿Bien? Entonces esta es una función que estamos pasando. Es la función de flecha. Y cualquiera que sea la función que pases se activa después de las validaciones y todo por las formas de aro de reacción ¿Bien? Y también, si ves por aquí, estás en este campo. Se puede ver el colon requerido verdadero. ¿Bien? Entonces, si quieres que este campo sea obligatorio, bien, entonces puedes haber requerido dos puntos verdaderos como el atributo de aquí, ¿de acuerdo? Y dice, incluir validación con requerido, bien, y otras reglas de validación HTML estándar, ¿de acuerdo? Y puedes mostrar los errores de esta manera. Todo bien. Se puede ver cómo se muestran los errores de ejemplo de errores requeridos. Entonces tienes acceso a errores por aquí. Bien. Entonces todo esto es atendido automáticamente, y si te desplazas hacia abajo por aquí, si vas a aplicar validación, puedes ver, estos son todos los campos de validación. Bien, puedes ver, estos son todos los campos de validación patrón requerido. Si quieres hacer algún tipo de coincidencia de patrones. Bien, si tienes algunas reglas de validación personalizadas, puedes hacerlo. Puedes tener mínimo y máximo para un valor aquí o para un campo por aquí. Todo esto, sin escribir gran parte de un código, solo tienes que especificar lo que quieres y todo lo demás está cuidado. Ahora imagina hacer esto en JavaScript Vanilla, ¿verdad? Sin usar formas de gancho de reacción. Bien, imagina hacer esto, ¿verdad? Entonces ya hicimos esto en una de estas aplicaciones de aquí que ves. Bien, entonces estoy manejando. Tengo este formulario por aquí, y estoy administrando todos los así que déjame a pantalla completa, y estoy manejando todos los errores y validaciones por aquí, mensajes de error por aquí usando estas funciones, Y, si, por solo dos campos, hay mucho código ahí, ¿verdad? Entonces lo que voy a hacer es que es una forma muy sencilla que ya tengo. Lo que voy a hacer es recortar esta forma para hacer uso de formas de gancho de reacción. Y cosas como validación y s aprenderán sobre todo eso por aquí, ¿de acuerdo? Entonces sí, eso es algo que vamos a cubrir. ¿Bien? Entonces lo que voy a hacer es, primero lo primero, necesitamos instalar formularios de gancho de reacción. Así que puedes copiar esto, ¿de acuerdo? Y ven aquí, dirígete a la terminal. Bien. Y puedes agregar esta cosa o ejecutar esto en el directorio raíz de tu proyecto. Ahora, una vez que hagas esto, habrá un poco de procesamiento dependiendo de tu conexión a Internet, velocidad y tu sistema, pero debería instalarse rápidamente. Voy a minimizar esto ahora. Y si vienes aquí a empaquetar a Jason, verás que se agregan formas de gancho de reacción. Así que déjeme por aquí. Se puede ver reaccionar en forma de gancho, ¿verdad? Por lo que esto se ha agregado a nuestra lista de dependencias. Todo bien. Y lo que ahora tenemos que hacer es que tenemos muchas funciones creadas al manejar cambio al enviar, validar y todo esto. No necesitamos todo esto. Voy a deshacerme de todo esto. ¿Bien? Yo sólo eliminaré todo esto. Voy a recortar este ejemplo por aquí, ¿de acuerdo? Al presentar, vamos a pasar algo, ¿de acuerdo? Valorar también no necesitamos. Por lo que este campo de entrada también se recortará por aquí. Bien. Bien. Entonces, en realidad, me desharé de todo esto. Entonces aquí. Bien, este va a ser un campo de entrada muy simple ahora, bien, entrada y vaya. Entonces creo que voy a tener un tanque de cierre automático. Voy a deshacerme de esto, ¿de acuerdo? Bien. Y voy a tener, hecho, dejarme hacer una cosa. Voy a tener el botón por aquí, ¿de acuerdo? O simplemente tengo las etiquetas. Voy a deshacerme de estos campos de entrada por aquí. ¿Bien? Sólo voy a tener las etiquetas. Bien, entonces tengo la etiqueta por aquí. Tengo la etiqueta por aquí. Bien, me estoy deshaciendo de todos los campos de entrada. Hay un botón de enviar, el cual es necesario para enviar el formulario. Eso es. Acabo de hacer mucha limpieza. Yo solo me desharé de la entrada también en la parte superior. Haremos insumos frescos cuando lo necesitemos, ¿de acuerdo? No necesito manejar enviar también, ¿de acuerdo? Ahora bien, esta es una forma que tengo versión de recorte bastante simple. Bien. Yo sólo voy a quitar esto. Aún no hay nada en la forma. No he agregado campos de entrada. ¿Bien? Ahora, primero lo primero, lo que vamos a hacer es que necesitamos hacer uso de la forma de gancho de reacción. Entonces voy a decir Import, usa el formulario por aquí. Puedes ver esta sugerencia. Utilice la forma de la forma del gancho de reacción. Así que solo seleccionaré esto y tendrás que Importar agregado. Bien. Ahora lo que vas a hacer es que necesitamos, voy a decir const Necesitamos registrarnos, y voy a decir usar formulario por aquí. Entonces usando este gancho, bien, necesito importar o necesito obtener estas dos funciones. Así que regístrate y yo diré manejar enviar, ¿de acuerdo? Entonces estas son las dos funciones o propiedades que puedes decir. Bien. Estas son las dos funciones a las que necesitas acceder, bien, desde el formulario de uso. Bien, y eso es lo que estamos haciendo por aquí. Entonces después de tener acceso a estas dos funciones como registrarse y manejar enviar, bien, hablaremos de ellas. Entonces, ¿qué es el registro? ¿Bien? ¿Por qué necesitas registrarte? Entonces Registrarse es una función que se proporciona dentro del formulario de uso gancho, que se proporciona para espiar reaccionar forma de gancho, y se utiliza para registrar los detalles que desea reaccionar forma de gancho para manejar. ¿Bien? Por ejemplo, si hay un campo de entrada, es posible que desee registrar ese campo en particular con forma de gancho de reacción. ¿Y por qué quieres registrarte? Porque quieres reaccionar hook form para gestionar la validación, sumisión, todo. Desea reaccionar en forma de gancho para realizar un seguimiento del cambio en cada campo de entrada y todo eso. Bien entonces por eso, querrías decirle reaccionar para formar eso, oye, maneja este campo en particular por mí, ¿verdad? ¿Cómo lo dirías? Eso lo haces con la ayuda de registrarte, por aquí. ¿Bien? Así que permítanme agregar un campo de entrada por aquí. Así que sólo voy a decir entrada por aquí, algo como esto. ¿Bien? Y voy a añadir una etiqueta de cierre automático. No necesito esto. Bien. Y por aquí, voy a decir, voy a añadir dos puntos lo siento, no dos puntos. Se trata de soportes redondos. Diré puntos gratis y me registraré. Bien. Y aquí, voy a pasar en Nombre, algo así. Así es como te registras. ¿Bien? Así que esto está hecho, ¿de acuerdo? Hemos agregado registro, y lo que ahora puede hacer es que tendremos una función on submit, así puedo decir const en submit submit, voy a hacer uso de la función de flecha por aquí Bien, algo como esto y voy a decir consola dot log. ¿Bien? Registro. Diré datos por aquí. ¿Bien? Entonces este es un formulario de datos que quiero iniciar sesión por aquí. Ahora, maneje enviar. Entonces tenemos que decirle a manejar enviar eso, oye, usa esta función para manejar enviar por mí. ¿Bien? Entonces lo que voy a hacer es que voy a venir aquí a formar, voy a decir manejar enviar Ups. Entonces 1 segundo. Diré al presentar, en primer lugar, al presentar. Bien. Y dirás manejar enviar y dirás en enviar, algo como esto. ¿Bien? Esto está hecho. ¿Bien? Ahora bien, lo que sucederá es siempre que ocurra el envío, ok, tendrás esta función activada con los datos. ¿Bien? Veamos si esto está pasando bien. ¿Bien? Se comprobará esto. Entonces iré a Consola. Voy a hacer duro o fresco. Voy a aclarar esto y voy a decir test submit. Puedes ver Nombre como prueba y cuántas líneas de código tuviste que escribir. ¿Bien? Sólo tenías que registrar esto. En primer lugar, antes de registrarse, había que hacer algunas tareas domésticas importando formularios de reactor. Tienes acceso a este registro y manejar enviar desde el formulario de uso, ¿de acuerdo? Y luego acabas de registrarte nombre, y ahora estás obteniendo los datos por aquí. ¿Bien? Ahora, el correo electrónico no está registrado, así que permítame agregar el correo electrónico por aquí también. ¿Bien? Entonces si digo correo electrónico, bien. Y esto es correo electrónico para mí, bien. Y si no registro este campo de entrada, no va a funcionar, pero necesito registrarme. Entonces voy a decir tres puntos, ¿cuál es la sintaxis? Veré el registro, y especificaré el correo electrónico por aquí. Voy a guardar esto. En el momento en que hagas esto, si refrescas, si te envío, verás el nombre y el correo electrónico como vacíos. ¿Bien? Ahora, cualesquiera que sean los cambios que ocurran, bien , prueba y A, verás que ambos aparecen en los datos. ¿Bien? Apenas estás haciendo nada. No estás administrando estados, no estás haciendo nada. ¿Bien? Acabas de decir reaccionar formas de gancho que, oye, registra esto y maneja esto por mí. ¿Bien? Ahora, react Hook form está haciendo todo por mí por ti, esencialmente. Tienes en enviar, estás diciendo manejar enviar. Este es el handle submit desde el formulario React Hook, y estás dando la función que necesita ser activada al sumisión, ¿de acuerdo? Porque podrías tener un envío personalizado o una forma personalizada de enviar datos, ¿verdad? Quizás quieras hacer una llamada EPI o algo así. Entonces después de todas las validaciones y todas están hechas, Bien, esta función se llama con los datos Todo bien. Entonces, para poner o resumir todo, ¿de acuerdo? Formulario de uso inicializa el manejo de formularios con forma de gancho de reacción ¿Bien? Eso es lo que hacemos. Regístrese, estamos haciendo uso para registrar los campos de entrada para la gestión de formularios. Handle submit hace el trabajo de manejar los envíos de formularios y recopilar los datos del formulario para nosotros. Y al enviar es una función personalizada que se activa en el envío de formularios, y hace un trabajo simple de registrar los datos del formulario. ¿Todo bien? Ahora bien, hay muchos beneficios de usar formas de gancho de reacción, bien. El primer beneficio que puedes ver de este código es menos código abreviado. No tienes que escribir mucho código para poner en marcha tus formularios. Menos código estándar, y tu componente también se ve simple, ¿verdad? Mejor rendimiento. Ahora, un mejor rendimiento significa que minimiza la re renderización en cada cambio de valor Entonces, si hay algún tipo de cambio de valor, si estás cambiando algo en el campo por aquí, ¿de acuerdo? En el manejo tradicional de formas y reaccionar, lo que sucede es que el componente se vuelve a renderizar. Pero en reaccionar a los formularios, el componente es que el formulario no se vuelve a renderizar cada vez que escribes en un campo, y esto hace que tu formulario sea más rápido, especialmente para aplicaciones grandes. Las validaciones se hacen más simples. Aún no hemos tocado las validaciones, pero Cosas como verificar si un campo está rellenado, o verificar si el correo electrónico es Todas estas validaciones estándar están incorporadas. Solo hay que agregar una palabra, y solo hay que decirle a las formas de gancho de reacción que, Oye, haz este tipo de validación, y eso es todo. Lo hace por ti, ¿verdad? No tienes que escribir las cosas manualmente para estas cosas estándar, ¿verdad? Entonces, en general, hace que el manejo de formularios sea muy fácil. Facilita recopilar datos de formularios, realizar un seguimiento de ellos y no es necesario actualizar manualmente State para cada campo de entrada como lo hace con los formularios de reacción regulares. Todo bien. Entonces, en definitiva, te hace la vida mucho más fácil. ¿Todo bien? Espero que estés impresionado con las formas React Hook, y, sí, exploraremos esto mucho. Y está siendo de uso común. Así que también verás esto en muchos proyectos. 5. Información en tiempo real: monitorea los valores de los formularios con React Hook Form: Oye, ahí. Entonces ahora es el momento de que comencemos a hablar de ver valores con formas de gancho de reacción. Ahora bien, ¿qué significa ver valores con formas de gancho de reacción? Entonces habrá escenarios en los que quieras hacer un seguimiento de qué valor está dando el usuario como insumo a medida que escribe, ¿verdad? Y quieres que sea quizás quieras que sea un poco en tiempo real, ¿verdad? Entonces aquí es donde entra en escena el reloj . Entonces, ¿qué es el reloj? Ver es una función, como se puede ver en el ejemplo de aquí, ¿de acuerdo? Se nos proporciona mediante el formulario React Hook, y usando esto, puedes ver cualquier valor, ¿de acuerdo? Ahora, siempre que registres un campo, bien, le das un nombre, ¿verdad? Entonces al momento de registrarte, dices registrar este campo, y este es el nombre del campo con el que quiero registrarlo. ¿Bien? Entonces aquí, en este ejemplo en la página web, se puede ver que el campo de entrada está registrado como nombre de ejemplo, ¿verdad? Entonces lo que haces es importar la función watch por aquí, y luego dices ver ejemplo. Ahora, cada vez que escriba algo en el registro por aquí en esta entrada de registro, esto se activará y watch tendrá el último valor de lo que esté haciendo. Entonces, básicamente es vigilar lo que está sucediendo con esa entrada y qué valor está entrando. Intentemos esto manos a la obra para obtener una mejor comprensión. Entonces voy a cambiar a nuestra aplicación. Tenemos esta sencilla aplicación donde estamos haciendo uso de formas de reacción. Un par de campos que estamos usando Input, name y input email. ¿Bien? Ahora, nombre está registrado con este nombre por aquí, y el correo electrónico está registrado con el nombre correo electrónico. ¿Todo bien? Ahora bien, ¿cómo vemos el valor? Entonces, lo primero, el paso uno es que nos ingresen reloj o agregamos vigilancia por aquí, ¿de acuerdo? Y luego por aquí, lo que podemos hacer es que puedo decir vigilar y por aquí, puedo decir nombre, algo así. Quiero ver nombre. Puedo asignar el valor de aquí a una variable o dejarme simplemente registrar el valor. Veamos qué pasa. ¿Bien? Entonces voy a decir Consola. Vaya, registro de puntos de consola por aquí, y algo como esto Bien. Déjame solo ahorrar. Se puede ver indefinido entrando. Bien. Ahora como iPanE puedes ver, ver siendo disparado Se puede ver ¿verdad? Se activa el reloj. Lo que sea que esté escribiendo , pueden ver, como la salida de aquí en la consola. Eso es reloj para ti, ¿verdad? Entonces este es el reloj. Ahora tienes un campo más por aquí, que es el correo electrónico, ¿verdad? Ahora, incluso si el correo electrónico está escrito, ¿de acuerdo? Estoy escribiendo el correo electrónico por aquí. Bien. Entonces no hay vigilancia para el correo electrónico por aquí, ¿verdad? Entonces es posible que desee agregar un reloj para correo electrónico también, y puede hacerlo usando la misma sintaxis, ¿verdad? Ahora bien, en lugar de tener el valor de name siendo logueado de esta manera, lo que recomendaría es que hagas uso del efecto de uso, use effect hook. Entonces lo que haría normalmente es comentarlo. Bien. Déjeme comentar esto. Yo diría que const vigilaba el nombre por aquí, ok. Y voy a asignar esto a ver y voy a decir nombre. Bien. Por lo que queremos hacer uso del efecto de uso. Diré const, mirado. Correo electrónico por aquí y voy a decir ver correo electrónico. Entonces estoy vigilando los dos campos ahora mismo. Yo quiero hacer eso. Lo que voy a hacer es hacer uso del efecto de uso. Ahora hay una razón por la que estoy usando use effect porque quiero mantener el registro del valor para los nombres separados de mi lógica de renderizado, justo aquí. Y usar el efecto de uso es una buena práctica para todo este tipo de efectos secundarios. Voy a hacer uso del efecto de uso. Esta es una sintaxis. Tengo una función de flecha por aquí, así, y tengo dependencia E así. O Esta es una sintaxis. Bien. Lo que vamos a hacer es por aquí dentro de esta lógica en particular, voy a decir log por aquí, log de consola, y voy a decir name value, name, y voy a decir nombre visto, algo así. Bien. Y voy a deshacerme de esto y aquí voy a decir nombre visto. Entonces, cada vez que cambia el nombre del reloj, este gancho de efecto de uso se ejecuta e imprime el valor del nombre del reloj. Puedes tener un gancho más como este, agrégalo por aquí. ¿Bien? Y esto podría vincularse al correo electrónico. Correo electrónico. Bien. Para que puedas decir correo visto, correo electrónico visto, algo así. Ahora, voy a refrescarme, puedes decir nombre como puedes decir me encanta, reacciona. Ves que el nombre se está imprimiendo por aquí. Correo electrónico, se puede decir correo electrónico en t example.com. Para que puedas ver cómo estás viendo los valores y si los envías, verás los datos que se están imprimiendo. Ahora bien, la pregunta es ¿qué está pasando? Bien. Entonces la pregunta en realidad es qué está pasando y por qué querrías hacer uso del reloj. ¿Cuáles son los casos de uso reales? ¿Bien? Lo primero, cuando estás registrando el campo con los formularios react hook, en realidad lo estás registrando usando un nombre, ¿verdad? El nombre de aquí es nombre y por aquí, nombre es correo electrónico. ¿Bien? Así que el formulario react hook identifica este campo como nombre y correo electrónico. Ahora cuando quieras ver los valores, puedes importar esto u obtener esta función desde la forma del reactor y podrás verla de esta manera. Ahora, cualquier tipo de cambio en el campo desencadenará esta actualización por aquí, y esto es completamente en tiempo real. ¿Bien? Ahora bien, si quieres mostrar estos campos, te recomiendo hacer uso de Effecto por aquí Porque eso separa la impresión de valores luego renderizando la lógica, ¿de acuerdo? Ahora bien, ¿por qué querrías hacer uso de esto? ¿Bien? Entonces, lo primero es la cosa número uno es la renderización condicional. Así podrás vigilar para renderizar condicionalmente partes de tu formulario en función de los valores ingresados por el usuario ¿Bien? Por ejemplo, mostrar u ocultar campos adicionales basados en la selección e. ¿Bien? Entonces este tipo de cosas, si hay diferentes tipos de campos por aquí. Entonces aquí estamos teniendo insumo. Si ha seleccionado por aquí o un menú desplegable o un botón de opción. Entonces puedes ver el valor en cuanto a lo que está sucediendo. Y dependiendo de lo que el usuario esté seleccionando ingresando, bien, puedes renderizar condicionalmente el formulario Y esto es tiempo muy real incluso antes de que se envíen los datos. ¿Correcto? Entonces este es un caso de uso. Validación en vivo, es posible que desee tener validación en vivo por aquí ya que el usuario está escribiendo el nombre, ¿de acuerdo? Y si va o intenta escribir un número, posible que quieras mostrar un mensaje de error de inmediato que, oye, el número no está permitido. Al igual que, el nombre no puede ser numérico. Entonces todo este tipo de validaciones en vivo lo puedes hacer o puedes mostrar pistas a medida que el usuario escribe Entonces, si el usuario está escribiendo un título, digamos, title es un campo. Y si tecleas un título muy largo, puedes tener una pista de que, oye, esto es más allá de diez personajes, bien, no se recomienda, algo así, ¿verdad? No es un error, sino una sugerencia a un usuario o una pista cómo puedes mejorar el título en tu forma, por ejemplo, ¿de acuerdo? Formas complejas. Entonces, si tiene algún tipo de formularios complejos, entonces watch se puede usar para formularios de varios pasos para monitorear y validar los datos en cada paso antes de continuar e incluso antes de que se envíe el formulario. Entonces estos son algunos de los casos de uso directo del reloj, ¿de acuerdo? Y creo que te puedes imaginar lo útil que es esto, ¿verdad? Y es súper útil porque es bastante eficiente en tiempo real, y es súper fácil de usar con un código mínimo. Literalmente hemos escrito mucho menos código, bien. Este código es literalmente para imprimir los valores, ¿de acuerdo? Esto no es necesario si no quieres imprimir, pero esto es literalmente lo que es. Bien, acabas de conseguir reloj y estás haciendo uso de la función de vigilancia por aquí, ¿verdad? Espero que esto sea útil. Y por aquí con US Effect, estos dos ganchos de efecto estadounidense están separados porque esto está activando al cambiar el nombre del reloj, y esto se está activando en el cambio de correo electrónico de vigilancia. Todo bien. Entonces espero que esto sea útil y espero que hayas podido seguirlo. 6. Experiencia de usuario perfecta: agrega validaciones en forma de hook en React: Entonces ahora es el momento de que comencemos a hablar de validaciones con forma de gancho de reacción Ahora bien, ¿cómo funciona la validación? Así que las validaciones funcionan de una manera muy sencilla con mucho menos código repetitivo Y se pueden especificar reglas de validación a la hora de definir los campos. Por ejemplo, aquí en mi pantalla, estoy en la página de Get Started de react Hook form, y por aquí se ve este ejemplo. Bien, este es el primer ejemplo que ves. Esto incluye una validación básica. Se puede ver. Por lo que dice, incluir la validación con reglas de validación HTML requeridas o cualquier otra norma. Y se puede ver cómo está incluyendo la validación. Está registrando primero el campo por aquí. ¿Bien? Y entonces está diciendo que requería verdad. ¿Bien? Ahora bien, lo que hace esto es que registra este campo y también le dice a React Hook form que, oye, este campo requiere un valor. Por lo tanto, el usuario no puede omitir este campo ni enviar el formulario sin pasar un valor para este campo. Bien. Ahora bien, si el campo no está rellenado , o, como, no se encuentra ningún valor por aquí, y si hay un error de validación, lo que sucede es que obtienes el objeto error, tienes acceso al objeto error, como puedes ver por aquí. ¿Bien? Ahora, este objeto de error es parte del formulario de uso Hook, y es una poderosa característica que se utiliza para administrar y mostrar los errores de validación para los campos de formulario. ¿Bien? Entonces este objeto va a realizar un seguimiento de cualquier error de validación que se produzca cuando el usuario complete el formulario, ¿de acuerdo? Y cada campo de formulario tendrá su propia entrada en el objeto errors, facilitando la identificación qué campo tiene un problema y cuál es ese problema. Bien. Ahora bien, ¿cómo funciona? Entonces, cuando el usuario envía el formulario. Así que aquí tengo registrado la validación como verdadera. Bien necesito requerido verdad, y tengo los errores por aquí, ¿de acuerdo? Ahora, cuando el usuario envía el formulario, el formulario react to comprueba los valores de entrada contra las reglas de validación que dijiste Entonces esta es una regla de validación que he establecido aquí en este ejemplo, ¿de acuerdo? Ahora, en este ejemplo, requerimos que este campo no esté vacío y el usuario envía un campo vacío Entonces se activa el error de validación y se actualiza el objeto de error de aquí, ¿de acuerdo? Y el mensaje de error de validación se está agregando aquí. ¿Bien? Y eso se está mostrando por aquí. ¿Puedes ver? Por lo tanto, se requieren errores punto ejemplo. Entonces, si esto tiene algún valor, entonces muestre este mensaje de error. Se puede ver cómo se está visualizando. ¿Bien? Entonces así es como puedes hacer uso de las validaciones por aquí. ¿Bien? Entonces déjame darte una idea por aquí ¿Bien? Ahora, voy a cambiar a nuestra base de código. Bien. Y aquí tenemos una forma muy sencilla. Estamos registrando dos campos por aquí. Bien. Y estos dos campos, lo que están haciendo es básicamente son campos de entrada como nombre y correo electrónico por aquí. ¿Bien? Ahora bien, lo que estaríamos haciendo es primero, yo vendría aquí. Al registrar el correo electrónico, lo siento, no correo electrónico, voy a registrar el nombre por aquí. Al hacer el registro, según la sintaxis de aquí, se puede ver la sintaxis. Al registrarte, pasas en un parámetro más con las reglas de validación, ¿verdad? Entonces simplemente voy a copiar esto. Bien. Puedes copiar esto desde aquí. Vienes por aquí y dentro de esto, puedes pegarlo. ¿Bien? Por lo que se requiere es cierto por aquí. ¿Bien? Ahora bien, una vez que esto es cierto, necesitas acceder al objeto error, ¿verdad? Entonces puedes decir estado de forma por aquí, estado de forma, cool in, y tendrás errores, algo así. ¿Bien? Entonces esto es algo que tenemos ahora, bien. Y ahora lo que puedes hacer es fuera de la etiqueta, bien puedes tener errores que se muestran. Errores enseñados, se puede decir nombre, Bien. Entonces nombre porque ¿qué es un nombre de campo? El nombre del campo es nombre. ¿Bien? Entonces puedes decir error nombre del punto, y voy a mostrar el mensaje por aquí. ¿Bien? Entonces puedo decir P, y puedo decir que se requiere nombre, algo así, ¿de acuerdo? Voy a guardar esto. Voy a darle a refrescar. ¿Bien? Si envías, verás que se requiere nombre, ¿verdad? ¿Qué hicimos para esto? Acabamos de agregar una propiedad que acabamos de tener acceso al objeto error, y estamos mostrando condicionalmente el mensaje de error Eso es. Eso es. Es así de simple y hace que el código estándar. Recorta el código estándar, ¿de acuerdo? Así que no tienes que escribir mucho código estándar por aquí Solo hay que decir lo que hay que hacer y se está cuidando todo lo demás. ¿Bien? Ahora ahora en este ejemplo, cómo funcionó es al momento de registrarse, decíamos, este es un campo que estamos registrando con el nombre nombre, ¿verdad? Entonces lo que pasó es que los errores se registran en este nombre por aquí, el nombre del campo. Entonces el nombre del campo es nombre, aquí el nombre del campo es correo electrónico. Bien. Entonces, en base a eso, los errores se están registrando por aquí, ¿de acuerdo? Y se están mostrando condicionalmente con la ayuda de lógica y operar por aquí ¿Bien? Ahora, así es como funciona, ¿de acuerdo? Ahora por aquí, en realidad estamos diciendo que se requiere verdad. Pero lo que puedes hacer se requiere true tiene un mensaje de error predeterminado por aquí, ¿verdad? Lo que puedes hacer es digamos error punto nombre punto mensaje. Veamos cuál es el mensaje que llegamos a ver. Para que veas que no vemos ninguna. Bien, en realidad necesito envolver esto. Así. ¿Bien? Entonces esto no existe, ¿de acuerdo? Ahora bien, lo que podemos hacer es aquí, en vez de decir: Bien, no es error. Son errores. Lo siento por eso. Bien. Entonces déjame refrescarme. Si me presento, ¿de acuerdo? No hay ningún mensaje de error que veas. ¿Bien? Ahora, puede establecer un mensaje de error personalizado aquí cuando se requiera registrarse. Entonces puedes decir que se requiere nombre, ¿de acuerdo? Y puedes salvar esto. En lugar de verdad, estás pasando el mensaje de error. Y si envías esto, verás que se mostrará el mensaje de error personalizado , ¿verdad? Entonces así es como también puedes hacer las cosas. Este es también un ejemplo en el que tú en vez de pasar verdadero, pasas en el propio mensaje de error y mostras los mensajes de error de esta manera. Todo bien. Entonces esta es una manera de hacer las cosas. Ahora, aparte de lo requerido, habrá escenarios en los que desea tipo de reglas adicionales o desea tener validaciones complejas Entonces, si vienes a la página web de React Hook Fm, aquí en el lado izquierdo, navegación, tienes que aplicar pestaña de validación. Haga clic en esto, y aquí verá una lista de todas las reglas de validación que se soportan. Se puede ver la longitud mínima, longitud máxima, todo esto, bien, se puede trabajar con. Se puede ver el nombre, o la longitud máxima es de 20. Longitud mínima que puedes establecer dependiendo de cómo quieras hacerlo. Bien. Así que aquí puedes entrar y aquí puedes decir requerido, ¿de acuerdo? Uh, se puede decir requerido, se requiere nombre, y puedo decir minlength, M length, y puedo decir longitud mínima de dos, por ejemplo, ¿de acuerdo? Y luego por aquí, voy a cambiar esto al valor booleano Voy a quitar el mensaje, y por aquí, voy a tener el mensaje como bien, voy a decir nombre es obligatorio y debe tener al menos dos caracteres. ¿Bien? Algo así. Voy a guardar esto. Y ahora, si refrescas, si puedes decir S, puedes ver que el nombre es obligatorio y debe tener al menos dos caracteres. Si vuelvo a escribir S, verás el formulario que se está enviando. Bien. Entonces sí, así es como funcionan las reglas de validación. Y sin esto, también, si no pones ningún tipo de nombre por aquí, verás que esta validación se activa, ¿verdad? Así que esto está funcionando absolutamente bien, ¿de acuerdo? También puedes hacer esto por correo electrónico, ¿de acuerdo? Se puede decir que requerido es cierto por aquí. Bien. Requerido es cierto, algo así. Bien. Y, vaya, así que esto tiene que ser precios dici Algo como esto, ¿de acuerdo? Y aquí, se puede decir, en lugar de errores nombre de punto, tendrá por aquí. Errores puntean correo electrónico, algo como esto. ¿Bien? Por lo que se requiere el correo electrónico, se puede decir. ¿Todo bien? Se requiere correo electrónico, y puedes deshacerte de esto y puedes guardarlo. Y ahora, también se requiere el correo electrónico. Se puede ver que se requiere nombre, se requiere correo electrónico. ¿Bien? También puedes agregar estilo CSS si lo deseas, bien. Pero así es como va a funcionar. Y tienes cosas adicionales como coincidencia de patrones. Bien, puedes hacer una coincidencia de patrones. Puedes ver por aquí, coincidencia de patrones en acción, puedes especificar el patrón que quieres hacer, y esto podría ser muy útil para los correos electrónicos. Bien. Entonces, si tienes un correo electrónico por aquí o patrón de correo electrónico con el que quieres validarlo, entonces también puedes ejecutarlo. Entonces lo que podemos hacer es por correo electrónico, podemos tener este tipo de patrón. Bien, entonces voy a venir aquí. Bien. He requerido correo electrónico por aquí. Bien. Requerido, he especificado a. Voy a decir patrón, algo así, voy a tener esto y voy a especificar este patrón. Voy a armar este patrón. Entonces este es un patrón que está ahí para la validación del correo electrónico. Bien, agregué este patrón. Puedes hacer algo normal de Google y obtener este tipo de patrón, bien, o compartiré este código con todos ustedes para Y si guardas esto, bien, déjame refrescarme. Si envío, se requiere correo electrónico. Escribo en esto, escribo en esto. Aún así, se requiere correo electrónico. Puedes ver el correo electrónico no es válido. Entonces si escribo esto, bien, correo electrónico aún no es válido. Puedo decir.com, y entonces debería funcionar probablemente. Se puede ver que el mensaje de error se fue. Entonces este correo tiene que ser válido, sólo entonces funcionará. Todo bien. Entonces este es un patrón de Javascript para validar correos electrónicos, y busco esto y tengo esto por aquí Entonces una cosa que quiero destacar para nombre por aquí, ves este mensaje completo que nombre no es nombre se requiere, y además debería ser de dos caracteres, ¿de acuerdo? Pero aquí, solo quiero destacar el mensaje de que deberían ser dos caracteres. Y si esto está vacío, entonces quiero resaltar como se requiere nombre. Bien. Entonces dependiendo de qué error esté cometiendo el usuario, quiero resaltar ese mensaje de error. Entonces eso también es posible. Te voy a mostrar cómo se puede hacer eso. Bien. Entonces por aquí, lo que voy a hacer es, solo voy a comentar esto por aquí. Bien. Voy a duplicar esto, ¿de acuerdo? Porque no quiero borrar esa. Quiero que tengas acceso a eso. Bien, ahora por aquí, tengo que registrarme. Bien. Ahora dentro de registro, estoy pasando requerido por aquí, requerido así. Bien. Requerido es cierto. La longitud mínima es de dos. ¿Bien? Ahora, te había dicho que en vez de ser requerido, lo que puedes hacer es que puedas pasar ya sabes que puedes pasar el mensaje por aquí, ¿de acuerdo? Espera un segundo. Me está dando un error. No sé por qué. 1 segundo. Vaya, me perdí los frenillos de cierre por Yo no copié eso. Todo bien. Eso está absolutamente bien. Ocurre. Ya sabes, yo sólo lo cerraré. Bien. Sí. Entonces, al usar required, puede especificar el mensaje de error. Entonces volveré a cambiar a ese método. Voy a decir nombre. ¡Uy! Diré que se requiere nombre, algo así. ¿Bien? Ahora bien, ¿cómo se especifica eso para la longitud? ¿Bien? Así que voy a tener esto por aquí. Voy a deshacerme de este mensaje. Diré error, tot, nombre punto mensaje, ¿de acuerdo? Ahora tengo esto. ¿Bien? Entonces no es error, son errores. Bien. Recuerda tener el nombre de objeto correcto por aquí. Bien. Ahora para esto, lo que puedo hacer es que pueda tener un par de valores clave nuevamente mencionado aquí, en lugar de dos para una longitud mínima por aquí. Bien. Cómo va a funcionar esto es que puedo decir longitud mínima. Voy a deshacerme de dos por aquí. Voy a añadir el pase rizado por aquí. Y voy a decir valor. Bien, hay una propiedad de valor, voy a decir 20. Bien. Y voy a decir mensaje por aquí. ¿Cuál es el mensaje que quieres tener, bien? Quiero tener mensaje como nombre debe tener al menos dos caracteres. Voy a copiar este mensaje. Diré que el nombre debe tener al menos dos caracteres. Hecho. Guarde esto. Ahora refrescar, y ahora escribe en a, voy a decir a en ate gmail.com No quiero ver ningún mensaje de error por correo electrónico. Entonces a@gmail.com, si me envío, verás que el nombre debe tener al menos dos caracteres, ¿verdad? Si elimino esto, se requiere nombre. El nombre debe tener al menos dos caracteres. Si escribo completamente y si presento, debería tener al menos dos caracteres. Vaya, hice esto 20. Lo siento. Voy a guardar esto otra vez. Si envío, verás los datos que se están enviando. Pero si se reduce esto, los nombres deben tener al menos dos caracteres. Si elimina esto, se requiere nombre. Se puede ver lo dinámico que es esto. Esta es otra forma de hacer las cosas, bien. Voy a alejar un poco, o simplemente voy a ir a pantalla completa. ¿Bien? Se puede ver nombre y mensaje. Déjenme llevar esto a la fila. Déjame traer el cierre por aquí. Bien, se puede ver cómo se estructura esto. Entonces te estás registrando por aquí, registrando el nombre. Estás diciendo requerido, se requiere nombre. ¿Bien? Por requerido, este es un mensaje que estás teniendo, ¿de acuerdo? Para longitud mínima, usted está diciendo que el valor es dos, pero quiero tener mensaje también. Entonces tienes esto pasado como un objeto, que es par de valores clave por aquí, bien, puedes ver, y ahora está tomando un objeto con múltiples reglas de validación. Register es en realidad tener el primer parámetro como el nombre del campo, ¿de acuerdo? El segundo parámetro es en realidad un objeto por aquí. Este es el objeto completo, yo. Entonces de esta collibrasa a esta collibrasa. Es todo el objeto que se está pasando para registrarse como segundo parámetro. Y dentro de esto, está esto también, longitud mínima, donde decimos valor es dos y nombre debe tener al menos dos caracteres. Cualquiera que sea el mensaje de error que entre, eso se muestra aquí. Y puedes ver lo dinámico que fue, ¿de acuerdo? Estas son todas las reglas estándar de la gente, ¿verdad? Longitud mínima, longitud máxima, todo lo que ves por aquí, longitud mínima, longitud máxima, bien, Min máx, patrón, ya sabes, validar. Por lo que esto es máximo y mínimo requerido. Todo esto es estándar, ¿verdad? ¿Por qué escribirías código para esto en tu aplicación en todos los campos de cada componente Entonces, si estás usando si estás construyendo una aplicación Farm heavy, imagina lo engorrosa que será para ¿Verdad? E imagina hacer uso de formas de gancho de reacción en una aplicación de forma pesada. Imagínate hacer eso, ¿de acuerdo? Por lo que brinda toda la flexibilidad. Puedes validar las cosas de esta manera, ¿de acuerdo? Incluso puedes validar las cosas de esta manera. ¿Bien? No quiero pasar en mensaje. Quiero tener un mensaje estándar para todas las reglas de validación. Eso se puede hacer. Te he enseñado cómo puedes hacer eso, ¿verdad? Entonces esa es la belleza de las formas React Hook. Es realmente una forma increíble de gestionar formularios en react. ¿Todo bien? Espero que estés disfrutando esto y espero que encuentres valioso todo el conocimiento que estás ganando con esta conferencia, ¿de acuerdo? Así que react Forms ha incorporado reglas de validación como longitud mínima, longitud máxima, todo lo que vemos por aquí, ¿de acuerdo? También puede tener funciones válidas personalizadas para lógica de validación compleja. Al igual que, si crees que necesitas algo más allá de esto, puedes escribir tus propias funciones. Bien. Pero eso es para más allá de esto, ¿verdad? Se puede hacer la gestión de errores a través del objeto de error. ¿Bien? Tienes acceso al objeto error y puedes jugar con el objeto error. Rendimiento, reaccionar a la forma está optimizado para el rendimiento, especialmente con formas más grandes. Todo bien. Entonces espero que esto les resulte útil y espero que esta sea información valiosa para todos ustedes. 7. La velocidad es importante: compara el rendimiento de formularios básicos y React Hook Form: Entonces, comparemos ahora el desempeño de forma normal o forma básica que no hace uso de formas de gancho de reacción. Entonces tengo el código para un formulario básico por aquí, y no estamos haciendo uso de formularios react hook por aquí. Todo bien. Entonces una cosa, se me olvidó quitar esta entrada. Entonces esta es la entrada para las formas de gancho de reacción. Entonces en esta forma particular, no estamos haciendo uso de reaccionar tomó formas, como dije. Es un formulario muy básico con correo electrónico, nombre, y estamos haciendo uso de on handle submit y on change event lesna por aquí, y el valor es como atado a este estado por Bien. Y tienes este enorme gancho de efecto para que podamos hacer un seguimiento de cuándo se renderiza realmente el formulario o cuántas veces se vuelve a renderizar, ¿verdad? Así que no estoy haciendo uso de la matriz de dependencia por aquí, y debido a que no estoy haciendo uso de la matriz de dependencia, esto se activará en cada re render. Y tengo esto en el cambio de mango, que es asegurarse de que el valor se actualice en los estados para cada cambio. Y tengo este manejador enviar para manejar el envío. Entonces ahora llegando a la compilación por aquí, si actualizo, verás el formulario básico renderizado dos veces, y esto es, por supuesto, por el modo estricto. ¿Bien? Entonces eso está absolutamente bien. Voy a acercar un poco. Bien. Ahora, voy a venir y teclear por aquí algo, así voy a decir que se puede ver, cada vez que un tipo en, me encanta reaccionar. Cada vez que escribo, se vuelve a renderizar el formulario. Así que se vuelve a renderizar 14 veces mientras escribí 14 caracteres. ¿Bien? Si escribo correo electrónico, se va a volver a renderizar de nuevo. Se puede ver. Y no es eficiente en el rendimiento. Si envío esto, bien, me sale un error, pero déjame eliminar esto y dejarme enviar. Se puede ver que los datos se envían pero después de una gran cantidad de renderizado. Por lo que esto no está optimizado para el rendimiento. Esto no es bueno. Hay mucho renderizado que está sucediendo, lo que se puede evitar. ¿Bien? Ahora bien, este mismo ejemplo, lo que podemos hacer es que podemos hacer uso de formas de gancho de reacción y reaccionar forma de gancho puede gestionar esto una manera muy efectiva y eficiente con un código mínimo. Entonces aquí estás escribiendo tanto código. Se pueden ver casi 50 líneas de código, pero esto se puede minimizar con formas de gancho de reacción. Ahora por aquí, he convertido este ejemplo en forma de gancho de reacción. Estoy haciendo uso del formulario de gancho de reacción por aquí, se puede ver, y muy menos código. Y aquí tengo dos campos, nombre y correo electrónico. Estoy registrando estos dos campos y tengo un gancho de efecto de uso sin una matriz de dependencia nuevamente para imprimir el formulario de gancho renderizado. Yo también tengo función de envío, que se está pasando de esta manera por aquí. Veamos cómo funciona el renderizado aquí. Si vengo por aquí, se puede ver reaccionar forma de gancho renderizado dos veces. Por supuesto, esto es por el modo estricto. Ahora si escribo, me encanta reaccionar. Bien. Se puede ver que no hay re renderizado que está sucediendo. ¿Bien? También puedes escribir correo electrónico, mail.com y puedes enviar los datos Se puede ver que no hubo ninguna re renderización que sucedió. Entonces esto es mucho más eficiente. React ok form minimiza el renderizado aquí. No vuelve a renderizar el componente, y ese es el beneficio de hacer uso de formas de gancho de reacción. Ahora bien, esta diferencia de renderizado importa mucho. Si está construyendo formularios grandes y complejos, formularios de incorporación complejos o formularios complejos en su solicitud y su solicitud es pesada Entonces esto importaría mucho a largo plazo, en donde si estás haciendo uso de la forma básica, antes que nada, tendrás mucho código reiterado. Sería difícil de manejar. Hay mucha re renderización, y el rendimiento no está optimizado, ¿verdad? Pero con las formas de gancho de reacción, se puede ver menos código. Bien, hay que escribir menos código. Una gran cantidad de código estándar se reduce, y react Hook form proporciona beneficios de rendimiento al reducir re renders innecesarios, haciéndolo más eficiente para el manejo de formularios, especialmente en su caso de uso donde está teniendo una aplicación más grande ¿Todo bien? Entonces espero que esto haya sido útil, esta demostración, y espero que esto les haya dado una buena claridad cuanto a la diferencia y la importancia de las formas básicas versus reaccionar. Y espero que adquieran conocimientos en cuanto a cómo reaccionan las formas son importantes y agregan valor. 8. Restablece y actualiza: domina la gestión del estado de formularios: Entonces ahora es el momento de que comencemos a hablar la funcionalidad de reinicio y ¿cómo se puede agregar la funcionalidad de reinicio usando formularios react Hook? Ahora, reset es una de las funcionalidades que quizás quieras ofrecer aquí. Entonces aquí en esta forma en particular, es posible que desee tener un botón de reinicio. Y también, una vez que se envían los datos, es posible que desee restablecer el formulario y posible que desee borrar todos los valores para que el usuario pueda comenzar con un nuevo envío si así lo desea. Todo bien. Entonces, ¿cómo harías eso? Entonces con react Hook form, es tan fácil como llamar a una función. Entonces, los formularios React Hook ofrecen esta función de reinicio que puedes agregar aquí, ¿de acuerdo? Y puedes hacer uso de ella. Todo bien. Entonces lo que voy a hacer es al presentar, estamos registrando los datos. ¿Bien? Entonces tengo esta forma muy sencilla, que tiene nombre nombre está registrado al reaccionar tomó forma con esta validación. Tienes correo electrónico por aquí, que está haciendo estas validaciones por aquí, y luego tienes errores también que estás mostrando, y tienes un botón que es Y estás manejando el envío de esta manera, solo estás registrando los datos. ¿Bien? Ahora en enviar, también deseo tener el reset, los datos a resetear porque lo que sucede ahora mismo es si someto, si digo A y si digo A en chmail.com, Bien, entonces puedo decir y voy a decir ABC. Esto no es restablecer la forma por aquí, ¿verdad? Entonces lo que puedes hacer por aquí es que reiniciaría el formulario. ¿Bien? Entonces lo que haría es agregar un par de pres rizados antes que nada ¿Bien? Esto está hecho. Y entonces aquí llamaría a esta función de reset. Diré reset. Y voy a decir, lo llamaré así. Bien. Y esto restablecería el formulario después del envío. Entonces lo que puedes hacer aquí es, bien, puedo decir prueba, y puedo decir prueba en mail.com Si digo enviar, borra todo el valor y restablece el Se puede ver que el envío está hecho y se borra el valor. ¿Bien? También puedes agregar un botón. Entonces aquí, se está agregando el botón, que se utiliza para enviar el formulario por aquí. Bien. Lo que puedes hacer aquí es que puedes crear un botón de reinicio. Se puede decir reset por aquí. El tipo es un botón, así que seleccionaré este. Diré botón. Y se puede decir al hacer clic por aquí, hacer clic, puede agregar la función de flecha y puede llamar al reset. Entonces puedes decir reset y puedes llamar a esto por aquí. Bien, algo así. Este es un botón de reinicio. Ahora bien, lo que pasaría es si tecleas algo, Bien. Vaya, lo siento. Entonces, si tecleas algo, puedes restablecer, ¿verdad? Si tecleas algo por aquí, cualquier cosa por aquí, quieres restablecer todo el formulario, tienes esta parte de reinicio. ¿Bien? Entonces esto es un beneficio de reiniciar por aquí. Es tan simple como hacer una llamada de función por aquí y borrar todos los valores. Puedes hacer la llamada a la función desde tu función Jascript aquí que estás definiendo, bien en la función submit, o incluso puedes hacerlo usando esto, en ClickList ahora Todo bien. Entonces espero que esto sea útil y espero que haya obtenido alguna información de esto. 9. Feedback personalizado: crea validaciones personalizadas en React Forms: Entonces ahora mismo, tengo una forma, que está haciendo uso de formas de gancho de reacción, y tengo un par de campos en la forma como esta es una forma. Tengo nombre, y tengo correo electrónico también por aquí. ¿Bien? Ahora bien, la validación que estoy usando por aquí es bastante simple. Como, necesito nombre para ser requerido, y el requisito de longitud mínima es de dos. Aquí, el correo debe ser requerido, y este es un patrón que quiero emparejar para saber si el correo electrónico es válido o no. ¿Bien? Entonces esta es una validación que ya tengo, ¿de acuerdo? Ahora bien, estas validaciones que estoy teniendo son validaciones comunes y estándar, Cuando estés construyendo formularios, habrá escenarios en los que quieras tener algún tipo de lógica de validación personalizada en tus campos de formulario que sea personalizada para tu aplicación. ¿Bien? Ahora, en ese caso particular, existe una opción llamada validar que le permite agregar dichos cheques personalizados a sus formularios. Ahora, por ejemplo, permítame darle un ejemplo aquí. Digamos que quiero que los usuarios que tengan nombre Edmin solo envíen este formulario Ahora bien, esta es una comprobación personalizada que es específica de mi aplicación, y no es algo común o genérico, ¿verdad? Entonces, ¿cómo agregarías eso por aquí? Entonces aquí es donde entra en imagen validar las opciones. Bien. Así validar opción toma función que devuelve true, y devuelve un mensaje de error si la validación cae. ¿Bien? Entonces true es retorno si pasa la validación. Todo bien. Ahora, veamos esto en acción. Entonces digamos en esta forma en particular, voy a tomar el mismo ejemplo donde un salario para comprobar si el usuario o el usuario está teniendo nombre como Edmin. Ahora bien, cómo puedes hacer uso de la opción de validar de aquí es que vienes a ingresar, dices por aquí y puedes decir validar, validar como la opción por aquí. Puedes tener par de valores clave, y puedes mencionar el nombre de la función aquí. ¿Bien? Entonces, ¿cuál es el nombre de la función? ¿Bien? Así podemos crear una función por aquí. Bien, puedo decir const validar nombre por aquí, y esta ganancia tiene valor como parámetro Puedes tener algo como esto, y luego puedes decir si valor. ¿Bien? Entonces puedes decir si el valor es igual a o admin. Bien, o si dices si el valor no es igual a Admin por aquí. Bien. Vaya, valoro no es igual a Admin, entonces lo que haces es regresar Solo se permite admin. Solo se permite admin, algo así. Bien. Dependiendo de tu requerimiento, puedes enviar el tipo de mensajes o puedes elaborar los mensajes dependiendo de qué requisito tengas, pero voy a guardar esto así que tengo esto creado ahora. Ahora, vienes aquí y dices nombre válido, algo así. Guarde esto. Vienes aquí y déjanos refrescarnos. Si vienes por aquí y si escribes AD, no estoy escribiendo Admin. Bien, y tengo un correo G válido. Bien. Correo electrónico válido por aquí. Si envio, verás que solo se permite admin. Bien. Si digo Admin por aquí, admin. Vaya, Admin y si digo enviar, verás que el error se ha ido y puedes enviar el formulario. ¿Todo bien? También puedes tener la lógica para decir que admin no está permitido, ¿bien? Por lo que es necesario revertir la condición. Admin no está permitido por aquí. ¿Bien? Y puedes revertir la condición, algo así. Si es igual a Admin, entonces no permita Admin. ¿Bien? Entonces si digo Admin por aquí, Bien. Todo bien. Admin no está permitido. Se puede ver. Todo bien. Entonces así es como funciona, bien. Y espero que tengas un giro de cómo funciona esto. Incluso puedes acortar esto como si no necesitaras esta función separada por aquí para estar ahí Bien. Entonces en lugar de eso, en lugar de escribir una función separada, lo que voy a hacer es en lugar de llamar a esta función aquí, bien, puedo decir por aquí, bien, puedo escribir una función por aquí misma de una manera taquigráfica Tengo este valor, bien. Haré uso de flecha. Diré que si el valor no es igual a Admin por aquí, ¿de acuerdo? Entonces en ese caso, escribes Admin no está permitido. Bien, algo como esto. Entonces esto funcionará de la misma manera. Todo bien. Puedes ver Admin no está permitido, derecho. Entonces esto volverá cierto. De lo contrario, devuelve este mensaje. ¿Bien? Entonces así es como funciona esta cosa por aquí y puedes deshacerte de esta función si es necesario. ¿Bien? Yo solo comentaré esto. Si vienes por aquí, ¿de acuerdo? Puedes decir admin por aquí y puedes intentar enviar. Puedes ver admin no está permitido. Todo bien. Y sí, esto está funcionando absolutamente bien. ¿Todo bien? Así que esto funciona, ¿de acuerdo? Y aquí, te había dado un ejemplo. ¿Bien? Entonces aquí lo que está pasando es aquí estamos pasando en el mensaje, ¿de acuerdo? Ahora, si no se encuentra el mensaje de puntos de errores, estás mostrando este mensaje personalizado. ¿Bien? Lo que puedes hacer es que puedes tener múltiples reglas de validación en esta única opción. Por ejemplo, aquí estás comprobando si el nombre de usuario es válido o si el nombre de usuario es admin o no, o si el nombre es válido o no. Lo siento, no el nombre es válido o no. Estás comprobando si el nombre es admin o no, ¿verdad? Si el nombre no es admin admin, en base a eso, estás mostrando este mensaje, ¿verdad? Entonces lo que puedes hacer es que puedes tener más por aquí, bien, no uno. ¿Bien? Entonces lo que puedo hacer es que puedo agregar esto puede ser una especie de objeto por aquí que podrías agregar, bien, y algo así. Bien. Y tú tienes por aquí. Entonces esto se puede nombrar ¿bien? Se puede decir que no admin Bien. Así. Y este es un cheque. Bien. Digamos que quiero agregar un cheque más, ¿no? Quiero agregar un cheque más, no es número, ¿de acuerdo? Entonces no quiero que los usuarios ingresen número en el campo. Entonces lo que puedo hacer es volver a decir valor. ¿Qué es un cheque? Voy a hacer así. Diré que es N N, es N por aquí. ¿Bien? Y voy a pasar en valor. Bien. Y voy a tener este mensaje por aquí. El nombre no puede ser número. ¿Bien? Y voy a terminar esto con una coma si es necesario ¿Bien? Entonces puedes terminar esto con la coma o no es necesario, en realidad, esta es la última Ahora, también quiero decirles que espero que tengan claro esta forma taquigráfica de hacer las cosas Entonces estamos haciendo uso de la expresión condicional por aquí, la condicional o, y puedes ver por aquí si el valor no es igual a admin, bien, comprueba si el valor no es igual a admin. ¿Bien? Y si la condición es verdadera, la expresión vuelve true. Entonces esta expresión volvería verdadera. Y si es falso, entonces esto sería devuelto. Bien. De manera tan similar, esto comprueba si esto es cierto, entonces esto sería cierto sería devuelto, y si es falso, entonces esto sería devuelto. Entonces aquí, puedes probar esto por aquí ingresando números por aquí. Se puede ver que el nombre es obligatorio y debe tener al menos dos caracteres de largo, ¿de acuerdo? Espera un minuto. En realidad puedo escribir ahora y puedo enviar. Bien. Me está dando un error por aquí, ¿ok? Y déjame comprobar cual es el error para que el error sea sencillo. Yo hice un error tipográfico por aquí. El, el último N es gorras por aquí, algo así. Uy. Lo siento. Así que el último N es gorras, algo así, ¿de acuerdo? Guarda esto y vienes aquí a refrescarte. Bien, y escribe tres, cuatro, ya ves, el nombre no puede ser un número. ¿Bien? Puedes agregar uno más, ¿de acuerdo? Puedes agregar uno más si así lo deseas. Puedes agregar tantos como quieras. ¿Bien? Todas estas son reglas de validación personalizadas. Si la regla es compleja y no está encajando aquí, puede agregar una función separada que verifique esto, algo así, y puede vincular esa función aquí. Bien. Entonces todo eso es posible por aquí, bien. Pero básicamente, quiero destacar así es una manera en la que puedes agregar lógica de validación personalizada, ¿bien? Y la opción de validar le permite realizar validaciones personalizadas detalladas más allá de simples comprobaciones Y esta característica es útil en escenarios donde las entradas necesitan formatos o condiciones específicas que no están cubiertas por cosas genéricas como longitud máxima requerida que existen por defecto en las formas de gancho de reacción. ¿Bien? Entonces, aparte de los predeterminados, las formas de gancho de reacción te brindan mucha flexibilidad para crear tus propias lógicas personalizadas también y eso también de una manera más limpia y ordenada Todo bien. Espero que esto sea útil y espero que ustedes sean capaces de seguir adelante. 10. Más allá de lo básico: implemente validaciones personalizadas sofisticadas: Entonces hablaremos un poco más sobre la opción de validar y aprenderemos cómo puedes agregar validaciones personalizadas que son un poco más complejas en tu aplicación, Hasta el momento, lo que hemos visto es con opción de validar, en realidad puedes agregar este tipo de validaciones, Puedes tener validaciones personalizadas que sean personalizadas para tu aplicación o dominio, Entonces aquí estamos comprobando si el usuario es admin o no, y aquí estamos comprobando si el usuario está ingresando número o no en el nombre. Ambos no deben ser permitidos y deben manejarse adecuadamente dependiendo qué condición establezca, ¿de acuerdo? Entonces tenemos las dos comprobaciones de condición por aquí. Habrá escenarios, en los que quizás quieras agregar más. Así que puedes agregar más cosas por aquí agregando coma al final y puedes seguir agregando más entradas aquí en la opción de validar Ahora, digamos que tienes un escenario en el que quieres realizar una validación asincrónica Ahora bien, ¿qué significa esta validación asincrónica? Entonces, la validación asincrónica significa que quieres hacer check con el back-end, Es posible que tenga un servidor backend, desee verificar algo en el back-end y luego mostrar el mensaje de error de validación al usuario. ¿Cómo harías eso? Entonces eso es posible con la ayuda de la opción de validación en sí, como validar la opción en sí misma. ¿Bien? Entonces digamos aquí en el escenario, tenemos nombre y correo electrónico. Digamos que quiero verificar nombre, Digamos que esto no es nombre, digamos que este es nombre de usuario y quiero verificar y validar esto con el back-end, ya sea que el nombre de usuario exista o no. Bien. Entonces, ¿cómo haría eso? ¿Bien? Entonces lo que puedes hacer es que puedes tener una función check o asincrónica por La comprobación asincrónica es lo que diría, ¿de acuerdo? Y usando eso, puedes realizar la validación asincrónica, Entonces déjame hacer eso. Bien. Entonces lo que haría es por aquí, vendría aquí. Bien, yo diría coma, yo diría, validar, y validar ya está agregado, así que voy a decir verificar nombre de usuario Bien. Y por aquí, yo diría valor o voy a decir valor por aquí. Bien. Y yo tendría lógica D. ¿Bien? Ahora, la lógica vendrá así por aquí. Bien. Pero esto ahora es hacer un cheque con el back end, ¿verdad? Entonces tendremos que marcar esto como sinc. Bien. Ahora déjame mostrarte cómo puedes hacer eso. Entonces digamos que tengo const, Bien tengo este valor Pollan existe, que estoy obteniendo de verificar si función de nombre de usuario por aquí. ¿Bien? Verifique si nombre de usuario, y está obteniendo valor como entrada. Ahora, ¿qué es verificar si nombre de usuario? ¿Bien? Así que déjame agregar check iff username por aquí ¿Bien? Ahora, por aquí, puedo decir función. Verifica que uso un nombre. Bien. ¿Cuál es el parámetro? Se acepta? Acepta el parámetro así que no quiero pasar parámetros en este momento. Bien voy a tener esto definido usando la función de flecha, así que voy a decir que es igual a, bien. Y espera un minuto. Engañé la sintaxis. Entonces voy a decir una sincronización. Comprueba si lo siento, no un fregadero. Engañé la sintaxis. Permítanme borrar esto. Bien. Entonces esto será const. Verifique si usa un nombre. Bien. Y voy a llamar a esto existir porque comprobar si el nombre de usuario existe suena mejor. ¿Bien? Entonces solo voy a reemplazar esto por aquí, verificar si el nombre de usuario existe. Bien. Y aquí, voy a marcar esto como función asincrónica, ¿de acuerdo? Y voy a pasar en nombre de usuario, así. ¿Bien? Porque el valor se está pasando por aquí, así que eso no es más que el nombre de usuario. Y tengo el cheque por aquí definido, ¿de acuerdo? Ahora lo que puedo hacer aquí es que puedo tener un cheque simulado en la parte de atrás. Puedo decir const existir. Bien. Y aquí podrías tener una llamada EPI que podrías hacer, ¿de acuerdo? Entonces aquí podrías tener el código para la llamada EPI, y eso podría devolver un resultado booleano O podrías procesarlo y obtener el valor booleano, ¿verdad? Así que totalmente depende de ti. Pero lo que puedo hacer por aquí es que en realidad puedes así que lo que haré aquí es simular la verificación de backend. Puedo decir que espere. Bien, y puedo decir una nueva promesa por aquí, ¿de acuerdo? Y voy a decir resolución por aquí. Bien. Entonces solo estoy creando una promesa. Voy a decir establecer tiempo de espera, y voy a decir resolver mil Estoy haciendo un retraso de 1,000 milisegundos por aquí, simulando un Y voy a decir regreso. Bien, voy a decir retorno, y puedes devolver un valor booleano por ¿Bien? Ahora bien, ¿qué valor booleano puedes devolver? Entonces lo que puedo hacer es que puedo por aquí tener una lista estática. Bien, entonces tendré una lista estática de nombres de usuario existentes. ¿Bien? Esta es una lista estática, y es una RA, diré Admin, diré usuario, uno, dos, tres, y puedo decir, puedes agregar uno más. Voy a seguir, algo como esto. Ahora se puede decir retorno, y puedo comprobar si existe. ¿Bien? Y lo siento, puedo devolver lo que voy a devolver, puedo decir nombre de usuario existente. Bien, dot incluye, voy a decir nombre de usuario por aquí. Entonces este es un nombre de usuario que estoy pasando. ¿Bien? Entonces lo que esto está haciendo es, tengo una lista estática de nombres de Por supuesto, este no será el caso en tu caso porque podrías hacer una llamada a la API backend aquí, ¿de acuerdo? Entonces lo que estoy haciendo es que estoy teniendo una lista inicial de nombres de usuario, bien, y estoy comprobando el nombre de usuario, como si el nombre de usuario que ha introducido el usuario existe en el nombre de usuario existente Si existe, estoy devolviendo ese valor de cheque. Ese es un resultado booleano que estoy regresando, ¿de acuerdo? Y antes de hacer esta comprobación, estoy simulando un retraso por aquí de mil milisegundos. Todo bien. Entonces esto es como una llamada API simulada por aquí, ¿verdad? Y aquí, como es un fregadero, voy a decir una espera porque está devolviendo una promesa por aquí. Y como esto es una espera, esto se convierte en un fregadero. ¿Correcto? Entonces espero que esto tenga sentido ahora en cuanto a lo que está pasando por aquí, ¿de acuerdo? Y por aquí, puedo decir retorno no igual a existir o se puede decir nombre de usuario ya tomado. ¿Bien? Entonces nombre de usuario ya tomado, algo así. Todo bien. Entonces tienes este tipo de mensaje siendo enviado. Guarde esto. Bien. Veamos cómo funciona esto. ¿Bien? Entonces voy a hacer un refresco. Entonces el nombre de usuario que tenemos es John, uno de los nombres de usuario, puedo hacer John. Puedo decir enviar. Puedes ver después de un poco, podrías ver el nombre de usuario ya tomado. Podría aumentar el retraso también. ¿Bien? Eso es posible. Puedo decir John uno y e a tasa gmail.com. Entonces como este nombre de usuario es único, funcionará. Bien, puedes ver que se envió. Bien. Entonces así es como funciona la validación asincrónica Y esto no es solo validación estática, sino que si quieres hacer algún tipo de comprobaciones o validaciones con el back-end, puedes hacerlo absolutamente, ¿verdad? Y ahora puedes imaginar lo poderoso que puede ser esto. ¿Bien? Entonces, si estás trabajando en un proyecto real, tienes EPI ejecutándose, necesitas validar algo llamando a algunos EPI, absolutamente puedes hacer eso, ¿ Incluso puedes hacer validaciones dependientes, ¿de acuerdo? Entonces validaciones dependientes, como te diré, digamos que tienes un campo de contraseña y un campo de contraseña confirmada, ¿ verdad Ahora bien, ahora lo que querrías hacer es cuando un usuario escribe la contraseña, quieres verificarla con el otro campo de contraseña, y si es incorrecta, posible que quieras activar un mensaje que la contraseña no coincide. Tal vez quieras hacer eso, ¿verdad? Entonces ese podría ser otro caso de uso por aquí. Entonces lo que haría es aquí, tengo una etiqueta. Esta es la segunda etiqueta después de esta etiqueta y después de este mensaje de error por aquí. ¿Bien? Lo que puedo hacer es aquí, puedo agregar una etiqueta. Bien, puedo decir etiqueta, algo así. Bien. Y puedo decir contraseña, así, y aquí puedo decir entrada por aquí. Bien. Y la entrada podría ser tipo contraseña. Bien, el tipo es la contraseña, y por aquí, yo diría, bien, por aquí. Yo diría registrarse registrar esto. ¿Bien? ¿Y cómo registrarías esto? Entonces registrarías esto como contraseña. Así que voy a mantener B pequeña contraseña por aquí. Bien. Y voy a decir lo requerido, tiene que ser requerido. ¿Bien? Puedo pasar en todo eso, campo requerido y validación requerida, pero no voy a hacer eso. ¿Bien? Yo sólo voy a mantener las cosas simples. ¿Bien? Entonces esto está hecho. Todo bien. O si quieres, solo voy a obtener la validación de aquí. Bien. Entonces sí, esta es la validación que voy a agregar aquí. Así que sí. Esto es. Bien. Y esto cierra lo requerido por aquí, registrado. El registro está cerrado. Bien, esto está cerrado, registro está cerrado, y luego tienes unas llaves cerradas ¿Bien? Y esto es todo. Estamos viendo un error por aquí. ¿De qué trata el error? Déjame ver. Entonces no necesito esta opción validada, así que me desharé de esto. Bien, voy a mantener las cosas simples. Bien. Esto es todo lo que necesito, bien. Así que más o menos. Bien. Y ahora, lo que puedo hacer es que pueda tener este campo duplicado. Bien. Entonces todo este campo lo duplica, y puedes tener una contraseña de confirmación por aquí, ¿verdad? Esto es confirmar. Bien. Y en lugar de escribir contraseña, esta es contraseña de tipo. En lugar de contraseña por aquí, puedo tener la contraseña de confirmación. Bien, algo como esto. Bien. Y tienes longitud mínima por aquí. Bien, me desharé de esta coma. Bien, longitud mínima. Ahora longitud mínima tras longitud mínima, lo que puedes hacer es aquí, puedes agregar una opción validada, para que puedas decir validar. Ahora bien, este campo de contraseña debe coincidir con la contraseña de confirmación debe coincidir con la contraseña, siempre. Entonces puedes decir valor, bien, flecha. Y se puede decir que el valor es igual a ver y Ups. El reloj no se importa, así que necesito importar, ver, ver, digo uh, no me está permitiendo ver y voy a decir contraseña. Entonces esto es ver la contraseña, y está devolviendo su valor, ¿de acuerdo? Y si esto es cierto, está bien. Si no lo es, entonces mandas un mensaje que es que las contraseñas no coinciden, ¿verdad? Contraseñas, no coinciden, algo así, ¿verdad? Esto está hecho. Tenemos que estar vigilados. Bien, así que aún no se ha agregado el reloj. Obtendremos un error, de lo contrario. Así que yo he hecho esto y tú puedes venir aquí. Bien. La forma no se ve tan bien. La forma no se ve tan bien. Pero déjame agregar algunas etiquetas BR y déjame alinear esto en un solo pro. Entonces después de cada etiqueta, agregaré la etiqueta BR. ¿Todo bien? Eso debería estar bien por ahora, estamos aprendiendo, ¿verdad? Entonces sí, tenemos el formulario listo. Bien. Puedes ver si presento, verás todas las validaciones desencadenadas, Bien. Y se puede decir prueba. Se puede decir A, al ritmo gmail.com. Contraseñas, se puede ver, uno, dos, tres, cuatro, Bien, uno, dos, tres, cuatro, cinco, seis. Bien, entré seis. Y por aquí, voy a introducir algún otro valor. ¿Bien? Y si digo que someta, ¿de acuerdo? Veamos qué pasa. Enviar no desencadenó nada. ¿Bien? Eso es raro. Todo bien. ¿Qué pasa? Déjame ver. Entonces la validación no se está activando tal vez porque no he agregado los mensajes de error de validación Bien, debería haber agregado eso. Entonces lo que voy a hacer es aquí después de la etiqueta, estás mostrando los mensajes de error, derecho. Entonces aquí después de la etiqueta, agregaría los mensajes de validación. Entonces errores, ordenar, confirmar contraseña. Bien. Este es un nombre de campo. Bien. Diré confirmar contraseña, algo así. Bien. Y por aquí también, justo después de la etiqueta, voy a añadir los mensajes de error. Entonces deberías ver el mensaje de error ahora las contraseñas no coinciden. Se puede ver cómo funciona. Entonces ahora si cambio esto a uno, dos, tres, cuatro, cinco, bien. Bien. Déjame ver. Cinco. Bien. ¿Escribí uno, dos, tres, cuatro, cinco, uno, dos, tres. Bien. Entonces déjame intentarlo de nuevo, uno, dos, tres, cuatro, cinco. Bien, aquí, uno, dos, tres, cuatro, cinco. Presento. Bien, puedes ver el mensaje de error de contraseña no se está activando. ¿Bien? Entonces está funcionando bien, bien. Y así es como puedes comparar o ver o crear validaciones que dependan de algún otro campo Entonces aquí, la validación del campo de confirmación de contraseña depende del campo de contraseña, ¿verdad? Entonces esto se conoce como validaciones dependientes es como lo llamo, ¿verdad Entonces se trata de eso. Y ahora una cosa más quiero mostrarte. Entonces ahora lo que está pasando es que si envías en ese momento, se activa la validación, ¿verdad? Habrá escenarios en los que quieras activar la validación al cambiar o cuando se está tecleando la cosa, ¿verdad Cuando el usuario esté rellenando el formulario. Entonces debería ser en tiempo real. Puedes hacer esa cosa en tiempo real con un pequeño cambio. Entonces lo que puedes hacer es que puedes venir aquí. Y cuando estás creando una instancia de formulario de uso por aquí, bien, aquí en forma de uso, puedes agregar un puedes agregar un CO prese, ok y aquí puedes especificar modo y puedes decir sobre cambio en cambio Se puede ver en bl había bastantes opciones, ¿de acuerdo? Bastantes opciones sobre desenfoque en cambio en enviar, voy a decir sobre cambio. Voy a guardar esto y ahora ver la magia, ¿verdad? Entonces aquí agregué. Se puede ver que el nombre es obligatorio y debe tener al menos dos caracteres de largo. Se puede ver. Bien. Afill en nombre, Bien, la validación está hecha A, al ritmo gmail.com. Bien. Contraseña. Bien, uno, dos, tres, cuatro, cinco. Bien, uno, dos, tres, cuatro, cinco. Bien. Se puede ver. Seis. Bien. Para que puedas ver cómo está funcionando el formulario en tiempo real ahora, y todo esto es por el único cambio. Agregué este par de valores clave por aquí como un objeto al crear el formulario, ¿verdad? Entonces espero que haya habido un buen aprendizaje por aquí sobre el manejo de formularios con react hook form, correcto. Espero que esto haya sido útil y espero que esto te dé la posibilidad de crear tus propios formularios una manera muy robusta con un rendimiento eficiente y muchas características al reducir mucho código repetitivo, Entonces eso es reaccionar formas de gancho para ti, y esas son las validaciones personalizadas para Espero que esto haya sido súper útil. 11. Conclusión del curso: Y eso nos lleva al final de este viaje transformador hacia el mundo de las formas de gancho de reacción Hemos profundizado en cómo reaccionar la forma de gancho puede cambiar las reglas del juego para administrar formularios en aplicaciones de reacción Hemos explorado muchas cosas cuando se trata de gestión de formularios en react. Hemos aprendido cómo puede abordar problemas comunes, y hemos visto el poder de reaccionar las formas de gancho. Entonces, solo para darte un recapitular de lo que hemos aprendido, hemos aprendido cómo puedes ver los valores cambiar dinámicamente, implementar validaciones, implementar validaciones, mejorar el rendimiento de tus aplicaciones de reacción Que tienen formas, por supuesto. Y también hemos comparado las formas básicas con la forma de gancho de reacción para que entiendas desde cero cómo reaccionar La forma de gancho puede cambiar las reglas del juego. Entonces espero que este curso te haya dado una perspectiva diferente de la gestión de formularios hacia el mundo de reaccionar. Pero recuerden, nuestra exploración no termina por aquí. El poder de reaccionar las formas Hook radica en su flexibilidad y capacidad para adaptarse a una amplia gama de tareas de manejo de formularios. Y te animo a que sigas experimentando, explorando y traspasando los límites de lo que es posible con esta herramienta en tus proyectos Estoy emocionado de ver cómo va a hacer uso de formularios de gancho de reacción en su proyecto porque esto va a potenciar su proceso de administración de formularios Y recuerde, la innovación y la eficiencia se trata de adoptar nuevas herramientas y técnicas, y reaccionar La forma Hook ahora es una parte vital de su kit de herramientas de reacción Gracias por formar parte de este curso y gracias por ser un grupo de aprendiz tan comprometido Espero que este curso no solo te haya equipado con nuevas habilidades, sino que también te haya inspirado a pensar en el manejo de formularios desde una perspectiva completamente diferente. Con esta clase, encontrarás un proyecto de clase que podrás completar y presentarlo en la sección de proyectos. Feliz aprendizaje, deseándote todo lo mejor.