Contrairement à Angular, React propose peu de solutions par défaut aux problèmes les plus courants. Il faut souvent ajouter des modules en dépendance, et il est parfois difficile de ne pas se perdre dans la jungle des modules pour React.
Voici une liste de modules et de pratiques utiles pour les besoins courants.
Socle
Mise en place
On peut initialiser facilement une application vierge React + Vite avec typescript,
via la commande npm create vite@latest my-app -- --template react-ts
.
Routage
Le module react-router fait ça très bien.
Appels API
Pour récupérer des données auprès d’une API ou via d’autres méthodes asynchrones, on peut utiliser SWR ou react-query.
État
Si on souhaite gérer un état globale de l’application au niveau local, on peut utiliser redux avec redux-toolkit ou alors recoil.
Formulaires
Le module react-hook-form fait ça très bien. Il supporte notamment Yup pour gérer la validation de champs.
Internationalisation
Le module react-i18next permet de gérer une appli multilingue.
Design
CSS
Pour restreindre des classes CSS à un composant en particulier, on peut utiliser le concept de modules CSS.
Material
Les principales bibliothèques graphiques sont disponibles pour React, et notamment Material UI. Elle fonctionne très bien, sauf avec le hook-form. C’est problématique et cela nécessite de recréer un composant « Contrôlable », pour chaque type de champ de formulaire.
Qualité
Tests
Plusieurs bibliothèques pour les tests fonctionnent bien avec React, notamment jest.
Lint
On peut combiner prettier et eslint, pour normaliser la base de code. Il existe des extensions à eslint spécialement pour React, afin de détecter et remonter si certaines mauvaises pratiques sont utilisées.
Documentation des composants
Pour documenter et présenter une bibliothèque de composants, on peut utiliser Storybook. Cela permet de manipuler et tester chaque composant, dans une interface dédiée.
Autres
Base de donnée locale
Pour utiliser plus facilement la base de données locale IndexedDB, on peut y accéder via dexie.
Authentification avec JWT
Pour extraire les données d’un jeton JWT, on peut utiliser jwt-decode.