web-dev-qa-db-fra.com

React js - Quelle est la différence entre HOC et le décorateur

Est-ce que quelqu'un peut expliquer quelle est la différence entre ces deux?

7
itay312

Pour toutes les raisons pratiques, les décorateurs et les COH font la même chose. 

Une différence majeure est que, une fois que vous avez ajouté un décorateur, la propriété/classe ne peut être utilisée que sous sa forme décorée. Le motif HOC laisse les composants d'ordre supérieur ainsi que les composants d'ordre inférieur disponibles pour utilisation.

Pour en savoir plus sur les décorateurs -> https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841
Decorators n'est pas une fonctionnalité JS largement implémentée. Il en est encore au stade de la proposition. Babel 7 autorise par défaut les décorateurs comme plug-in par défaut dans leur configuration d'étape 0 . https://babeljs.io/docs/plugins/transform-decorators/

5
Jeff P Chacko

Je suis également curieux de savoir pourquoi la communauté React appelle ceci composant d'ordre supérieur (HOC) au lieu de motif Decorator , ce qui semble être exactement ce qu'elle fait et a été décrit en 1994 (!) par le Gang of Four (GoF): Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides .

Une autre source de confusion est que le motif de décorateur d'ES7 est différent de l'explication du motif de décorateur par le GoF. Il est regrettable que ce soit le cas. J'aurais espéré qu'au lieu de redéfinir un terme existant, il serait préférable de le réutiliser même en le qualifiant. Et même si cela n’était pas possible, inventer un terme différent serait plus acceptable.

1
Hendy Irawan

Deux différences sont les décorateurs sont utilisés pour muter la variable alors que les HOC sont recommandés. Une autre est spécifique à React, les COH sont supposés rendre un composant, tandis que les décorateurs peuvent renvoyer différentes choses en fonction de la mise en œuvre.

1
thedarkone