9. Conclusion intermédiaire
Les vingt-cinq exemples ont présenté les notions dont nous avons besoin pour écrire le client [RdvMedecins] :
Notion | Utilisation dans l'étude de cas |
composants, props, fonctions en props, [children] | la barre de navigation, les champs de formulaire, les fenêtres |
[useState], valeurs calculées, [useEffect] | toutes les pages ; l'agenda qui suit son adresse |
champs contrôlés, validation par le serveur | la connexion, les fiches des médecins et des clients, la création d'un compte, le compte de l'utilisateur |
fonctions de mise en forme, [Intl] | la mise en forme des dates, des horaires, des noms |
hooks personnalisés | l'envoi des formulaires, le captcha |
magasins [Zustand] | l'utilisateur connecté, les messages, la fenêtre de confirmation |
[React Router] et ses gardes | les pages, les droits de chaque rôle, la session à rétablir après F5 |
[i18next] | le français et l'anglais, et la traduction des erreurs du serveur |
[fetch], cookie httpOnly, proxy | la connexion, la session expirée, tous les échanges avec le serveur |
la couche d'accès à l'API, [TanStack Query] | un fichier [rdvmedecins.api.ts], une fonction par route ; la lecture et le cache des données |
Le client sera l'exact équivalent de l'application HTML du cours [NestJS], page pour page. La différence est ailleurs : le serveur ne fabrique plus aucune page, il répond en JSON, et tout ce qui touche à l'affichage (les pages, la langue, la mise en forme des dates, les messages) s'est déplacé dans le navigateur.