De réagir.Composant vs Réagir.createClass
Je suis confus quoi la différence entre un composant et une réagir la classe?
Et quand dois-je utiliser un composant sur une réagir la classe?
Ressemble à un composant est une classe et createClass crée un composant.
https://facebook.github.io/react/docs/top-level-api.html
Réagir.Composant
C'est la classe de base pour Réagir Composants lorsqu'ils sont définis à l'aide de
ES6 classes. Voir Composants Réutilisables pour savoir comment utiliser ES6 classes avec
De réagir. Pour quelles méthodes sont effectivement fournis par la classe de base, voir
l'API du Composant.
Réagir.createClass
Créer une classe de composant, étant donné un cahier des charges. Un composant
met en œuvre une méthode de rendu qui renvoie un seul enfant. L'enfant
peut avoir arbitrairement une profonde enfant de la structure. Une chose qui rend le
composants différents que les prototypes des classes, c'est que vous
n'avez pas besoin d'appeler de nouveau sur eux. Ils sont des emballages pratiques qui
construire la sauvegarde des instances (par le biais des nouvelles) pour vous.
- Être conscient que l'utilisation d'une syntaxe ou l'autre contient quelques mises en garde. Par exemple mixin ne sont pas pris en charge dans le cas de
MyComponent extends React.Component
. - Je vois cela dans certains reflux des exemples, où certains fichiers sont écrits avec le composant et certains avec createClass. J'ai lu votre truc avant, mais ça me conduire à cette question. Donc, fondamentalement, si je veux utiliser un mixin, j'utilise createClass. Si non, je peux aller avec ES6, droit ?
Vous devez vous connecter pour publier un commentaire.
La seule
React.createClass
fonctionnalité qui n'est pas pris en charge parMyComponent extends React.Component
est mixin.faire
getInitialState()
que vous pouvez faire:ou si vous utilisez un transpiler comme babel, vous pouvez obtenir
Au lieu de l'auto-liaison fournis par createClass, vous pouvez explicitement lier à l'aide d'
.bind(this)
comme vous l'avez indiqué ci-dessus, ou utiliser de la graisse flèche ES6 syntaxe:Au lieu de mettre les choses en componentWillMount, vous pouvez mettre les choses dans le constructeur de la sorte:
Il y a plus de détails dans la Réagir la documentation eux-mêmes, mais, fondamentalement, la seule fonctionnalité supplémentaire qui Réagissent.createClass achète est mixin, mais autant que je sache tout ce que vous avez fait avec mixin qui peut être fait avec un contexte et des plus commandé composants.
Il y a 2 façons de faire la même chose.
React.createClass
est une fonction qui retourne une classe de Composant.React.Component
est un composant existant que vous pouvez étendre. Principalement utile lorsque vous utilisez des ES6.Lewis C
's réponse ci-dessous. Il explique les différences.React.createClass
- méthode pour créer des classes de composantsPour une meilleure utilisation avec ES6 modules par étend
React.Component
, qui étend la classe de Composant au lieu de l'appelercreateClass
Peu de différences entre les deux sont,
Syntaxe :
De réagir.createClass:
Réagir.Composant:
getInitialState() :
De réagir.createClass:
Oui
De réagir.Composant:
Pas de
constructeur() :
De réagir.createClass:
Pas de
De réagir.Composant:
Oui
propTypes Syntaxe :
De réagir.createClass:
Réagir.Composant:
Propriétés Par Défaut :
De réagir.createClass:
Réagir.Composant:
état :
De réagir.createClass:
Réagir.Composant:
ce :
De réagir.createClass:
Réagir.Composant:
C'est ressembler à Réagir, de nous recommander d'utiliser
React.createClass
Autant que je sache
MyComponent extends React.Component
pas pris en chargegetInitialState()
Utilisation
.bind(this)
dansReact.createClass
vous obtiendrez ceJe pense que c'est peut-être plus que cela.
Si quelqu'un a la liste de tous
React.createClass
fonctionnalité va être génial.Remarque: Réagir est actuellement en 0.14.3
Our eventual goal is for ES6 classes to replace React.createClass completely, but until we have a replacement for current mixin use cases and support for class property initializers in the language, we don't plan to deprecate React.createClass.