En fait, les composants déclarés avec des classes sont généralement plus long à écrire, car ils proposent deux fonctionnalités supplémentaires par rapport aux composants déclarés avec des fonctions :
A priori, on pourrait se demander pourquoi on n’utilise pas tout le temps des composants de classe, puisqu’ils sont plus complets, et offrent d’avantage de fonctionnalités. Mais il faut savoir que les composants de fonction ont également une utilité. En effet, React recommande d’utiliser le plus possible les composants de fonction, lorsque c’est possible, car :
Donc, imaginez que vous êtes un développeur React un instant. Tant que vous n’avez pas besoin de fonctionnalités avancées, vous utilisez des composants de fonction, comme recommandé par React dans ce genre de situation. Ensuite, au fur et à mesure de vos développements, et de l’ajout de nouvelles fonctionnalités, vous devez refactoriser certains composants de fonction de votre application en composants de classe, pour ajouter le state ou la gestion du cycle de vie… Et vous devez faire cela régulièrement, ce qui devient vite très pénible…
Pour résumer, nous avons ceci pour le moment :
Composant de fonction | Composant de classe |
– Plus performant. – Plus concis. – Pas de gestion du state. – Pas de gestion du cycle de vie du composant. | – Gestion du state. – Gestion du cycle de vie du composant. – Moins performants. – Plus long à écrire. |
Heu… c’est infernal ! On n’a même pas commencé à développer quoi que ce soit, et c’est déjà TROP compliqué !! 😤
Ne vous inquiétez pas, vous n’êtes pas du tout le seul. En fait, cette problématique est tellement répandue, que l’équipe de React elle-même a proposé une nouvelle solution pour répondre définitivement à cette problème : les Hooks. Vous verrez, tout va devenir (un peu) plus simple.
Dans le jargon React, sachez que les composants de fonction sont également appelés Stateless components. Et les composants de classe sont appelés Statefull components. Bien sûr, cela désigne la même chose, mais ne soyez pas surpris si vous tombez sur ces termes sur Internet.