Fermer

septembre 5, 2019

Formes en réaction4 minutes de lecture

ReactT Light_870x220


Le développement de formulaires dans React se résume en trois choses: les données, les validations et les soumissions. Découvrez comment gérer ces problèmes vous-même ou utiliser Formik pour simplifier les choses.

À mesure que votre formulaire dans React devient plus compliqué, vous vous retrouvez en train de réinventer de plus en plus les fonctionnalités fournies avec Formik. Si vous avez du mal à contrôler manuellement un formulaire et à le valider, il est peut-être temps de passer à Formik ou à un autre package de formulaire, afin de faciliter la gestion de ce processus. Dans cet article, nous allons étudier les formes dans Vanilla React et les comparer aux formes avec Formik.

Lorsque vous pensez aux formulaires dans React, vous devez garder à l'esprit trois éléments:

  1. Comment accéder aux informations entrées par l'utilisateur?
  2. Comment garantir la validité des informations saisies?
  3. Comment puis-je envoyer leurs données au serveur?

Cet ordre est important car vous ne pouvez pas exécuter la deuxième étape sans d'abord avoir effectué la première étape et vous ne souhaitez pas soumettre de données non valides au serveur.

Cet article présentera les bases des formulaires dans React, avec et sans l'aide de packages supplémentaires. Nous verrons comment faire des «formulaires de réaction de vanille», puis comment réaliser la même chose en utilisant le paquet Formik de Jared Palmer.

Ma thèse est que plus la forme est simple, plus Réagissez sans paquets supplémentaires, mais à mesure que le nombre de champs augmente et que les validations deviennent plus difficiles, nous avons tendance à rester avec Formik pour éviter de reconstruire Formik nous-mêmes!

Tous les exemples dans leur intégralité peuvent être trouvés ici sur GitHub .

Formes de réaction de vanille

Lorsque je dis «Formes de réaction de vanille», je ne fais référence qu’à React… aucun paquet supplémentaire. Comme vous le verrez dans cette section, elle pourrait rapidement perdre le contrôle de son contrôle, car avec une seule entrée comportant quelques validations, elle est déjà en train de devenir un composant de taille décente.

Controlled Components

répondez «Comment accéder à ce que l'utilisateur a saisi?», nous utiliserons Controlled Components . Les composants contrôlés sont les endroits où l'entrée de l'utilisateur déclenchera une mise à jour de l'état du composant, ce qui entraînera une restitution du composant, affichant ce que l'utilisateur a entré.

En utilisant l'événement onChange sur un champ nous pouvons mettre à jour l'état. Puis, ayant la valeur prop égale à la valeur dans notre état, nous pouvons l'afficher à l'utilisateur.

 export   default   function   Contrôlé  ( ])   {
   const   [ valeur  setValue ]   =  Réagissez .  useState  (  "" ) ; 

   return   (
     < form > 
       < entrée 
         type  = [19659020] " text "  
         placeholder  =  " Nom contrôlé "  
         onChange  =  {1965  event  =>   setValue  ( événement .  target .  valeur ) } ] valeur  =  { valeur } 
       />  
     </  de forme > 
  ) ; 
 } [19659057] Validation des données 

Pour valider les entrées de notre utilisateur, nous allons maintenir un objet d'erreur dans notre état. Ceci sera rempli chaque fois que l'utilisateur modifiera une valeur dans le formulaire et avant sa soumission. Laissons de côté la soumission de formulaire pour le moment, examinons la fonction validate . Elle recommencera à chaque fois, en renseignant un objet error sur la base des valeurs actuelles de notre formulaire.

 function   validate  ( valeurs )   {
   let  erreurs  =   {} ; 

   if   (!  valeurs .  nom )   {19659022] 
    erreurs .  name  =   "Obligatoire" ; 
  } 

   renvoyer  erreurs ; 
} 

à l'aide de ] useEffect nous pouvons détecter le changement de valeur d’une des valeurs saisies en appelant la fonction validate et en plaçant son résultat dans notre état. Avec un objet errors nous pouvons éventuellement ajouter une classe à notre champ d'entrée en vérifiant si le champ contient une erreur: className = {errors.name? "has-error": null} . Sous le champ de saisie, nous transmettons le message d'erreur à un composant appelé Erreur qui transformera le message (s'il existe) en un élément avec les classes correctes.

 export   default   function   VanillaForm  ()   {
const [ soumission de définie par ] = Réaction [. use ( false ) ;
const [ nom nomName ] = Réagissez . useState ( "" ) ;
const [ erreurs



Source link