Typefully

Les formulaires en React 📈

Avatar

Share

 ‱ 

3 years ago

 ‱ 

View on X

Les formulaires en React ⚛ Quand j'ai dĂ©butĂ© React je faisais tous mes formulaires avec des states ❌ Voici comment les faire pour ĂȘtre le plus optimisĂ© 📈 Quand on fait des forms en React on a deux choix đŸ”școntrolled đŸ”șuncontrolled Lequel choisir ? #RT 👇 #thread
đŸ”ș Controlled đŸ”ș Voici comment je faisais mes formulaires quand j’ai dĂ©butĂ© React:
C’est trĂšs basique. J’ai un formulaire et Ă  chaque fois que je change un caractĂšre, j’update un State. Quand je clique sur le bouton j’appelle le `onSubmit` ce qui va lancer mon alerte avec les valeurs de mes states đŸ˜„
On peut voir qu’il y a quand mĂȘme beaucoup de code pour pas grand chose : ‱ les events handler (handleNameChange, onSubmit x2) ‱ les states (useState x2) ‱ les events (onChange, onClick)
Pour un formulaire uniquement !? 😼 Maintenant regardons cotĂ© performance 📈 (Ce formulaire est trĂšs petit, les perfs on s’en tape. Mais on imagine le mĂȘme avec des librairies et 20 champs, ce n'est pas la mĂȘme chose đŸ€”) Chaque caractĂšre = 1 render
En Ă©crivant mon nom / email, j’ai eu 19 rerender. Mais, rien n’a changĂ©. Oui, la valeur du formulaire a changĂ©, mais pour ça il n’y a pas besoin de React c'est gĂ©rer avec le dom nativement Un render permait de mettre Ă  jour la vue ou dĂ©clencher du code, ici rien n’a Ă©tĂ© changĂ©
C’est pourquoi il y a un moyen plus optimisĂ© de faire pareil đŸ”ș uncontrolledđŸ”ș Dans mon second exemple, je n’utilise plus de State. Il y a un formulaire avec la balise `onSubmit`. Dans le formulaire, il y a des inputs Les valeurs sont rĂ©cupĂ©rĂ©es basiquement avec le dom
Voici le nombre de rerender qui se produisent ! (aucun sauf le premier quand l'app s'ouvre) Et, le résultat est totalement similaire ! Voici la CodeSandBox utiliser : codesandbox.io/s/web-form-type-render-ihop0h?file=/src/FormWithForm.jsx:119-126
Il n'y a pas besoin de states sauf pour une barre de recherche ou autre Et lĂ , tu vas me dire "oui mais tu t'en rends compte on ne peut pas faire de data validation" Tu as raison, et on va voir les solutions ensemble !
Enfaite, je ne vais pas te proposer qu'une solution đŸ”ș react-hook-form. : react-hook-form.com/ Juste une des meilleures library pour tes formulaires ! Il gĂšre la validation, il est opti et simple Ă  utiliser !
Pour les arguments contre Formik tu peux les trouver ici : blog.logrocket.com/react-hook-form-vs-formik-comparison/
Voici le mĂȘme exemple refactor avec le hook presentĂ© ! Évidemment avec une ligne on ne voit pas trop l'avantage mais quand il s'agira d'ajouter des validations et autre le bĂ©nĂ©fice se fera rapidement voir !
Ce sujet me tient Ă  cƓur car j'ai fait longtemps l'erreur 😱 et les forms c'est la base du web ❀ Follow @melvynxdev pour ne rien rater ❀ Dernier Thread : twitter.com/melvynxdev/status/1539645420485242881 PS : don't use Formik
Avatar

Melvyn ‱ Builder

@melvynxdev

‱ Entrepreneur (+6 SaaS en 1 an) ‱ CTO de Codeline ‱ Formateur (+1500 devs formĂ©s)