Réagir: quand utiliser des composants basés sur classe ES6 par rapport aux composants ES6 fonctionnels?

Après avoir passé du temps à apprendre Réagir, je comprends la différence entre les deux principaux paradigmes de création de composants

Ma question est de savoir quand devrais-je utiliser lequel et pourquoi? Quels sont les bénéfices / compromis de l'un sur l'autre?

Cours ES6 / 7:


import React, { Component } from 'react'; export class MyComponent extends Component { render() { return ( <div></div> ); } } 

Fonctionnel:


 const MyComponent = (props) => { return ( <div></div> ); } 

Je pense fonctionnel quand il n'y a pas d'état à manipuler par ce composant … mais est-ce cela?

Je devine si j'utilise des méthodes de cycle de vie, il est préférable d'utiliser un composant basé sur la classe.

Vous avez la bonne idée. Allez avec fonction si votre composant ne fait pas beaucoup plus que de prendre des accessoires et de rendre. Vous pouvez les considérer comme des fonctions pures car elles seront toujours les mêmes et se comportent de la même manière, compte tenu des mêmes accessoires. En outre, ils ne se soucient pas des méthodes de cycle de vie ou ont leur propre état interne.

Parce qu'ils sont légers, écrire ces composants simples en tant que composants fonctionnels est assez standard.

Si vos composants ont besoin de plus de fonctionnalités, comme le maintien de l'état, utilisez plutôt les classes.

Plus d'informations: https://facebook.github.io/react/docs/reusable-components.html#es6-classes

Essayez toujours d'utiliser des fonctions sans état (composants fonctionnels) autant que possible. Il y a des scénarios où vous devrez utiliser une classe régulière de React:

  • Le composant doit maintenir l'état
  • Le composant re-rend trop de rendu et vous devez contrôler cela via shouldComponentUpdate
  • Vous avez besoin d'un composant conteneur

METTRE À JOUR

Il existe maintenant une classe React intitulée PureComponent que vous pouvez étendre (au lieu de Component ) qui implémente son propre shouldComponentUpdate qui prend en charge la comparaison des accessoires peu profonds pour vous. Lire la suite