De réagir.Composant vs Réagir.PureComponent
Officiel Réagir docs état que "React.PureComponent
's shouldComponentUpdate()
seulement superficiellement compare les objets", et conseille à l'encontre de ce si l'état est "en profondeur".
Compte tenu de cela, est-il une raison pourquoi on devrait préférer React.PureComponent
lors de la création de Réagir composants?
Questions:
- est-il un impact sur les performances en utilisant
React.Component
que l'on peut envisager d'aller pourReact.PureComponent
? - Je devine
shouldComponentUpdate()
dePureComponent
effectue peu profondes des comparaisons. Si c'est le cas, ne peut pas se dit de la méthode utilisée pour approfondir les comparaisons? - "En outre,
React.PureComponent
'sshouldComponentUpdate()
saute prop mises à jour pour l'ensemble de la composante sous-arbre" - est-ce à dire que prop changements sont ignorés?
Question se pose à la lecture de ce moyen blog, si cela aide.
- Je sais, ça fait quelques mois depuis que vous avez posté, mais j'ai pensé que cet article peut vous aider: 60devs.com/pure-component-in-react.html
Vous devez vous connecter pour publier un commentaire.
La différence majeure entre
React.PureComponent
etReact.Component
estPureComponent
un peu profonde comparaison sur changement d'état. Cela signifie que lors de la comparaison des valeurs scalaires il compare leurs valeurs, mais lorsque l'on compare les objets qu'il compare uniquement des références. Il contribue à améliorer les performances de l'application.Vous devriez aller pour
React.PureComponent
quand vous pouvez satisfaire à une des conditions ci-dessous.forceUpdate
de la modification des donnéesSi vous utilisez
React.PureComponent
vous devriez assurez-vous que tous les composants enfants sont aussi de la pure.Oui, il va augmenter vos performances de l'application (en raison de la faible comparaison)
Vous l'avez deviné correctement. Vous pouvez l'utiliser si vous respecter les conditions que j'ai mentionnées ci-dessus.
Oui, prop changements seront ignorés Si il ne trouve pas de différence dans les eaux peu la comparaison.
It means that when comparing scalar values it compares their values, but when comparing objects it compares only references. It helps to improve the performance of the app.
? MerciState/Props should not have a hierarchy
désolé, pouvez-vous expliquer un peu ce qu'hiérarchie ici?this.setState({ obj: Object.assign({}, this.state.obj, { changing: true }))
.Component
etPureComponent
ont une différence dePureComponent
est exactement le même queComponent
sauf qu'il gère lashouldComponentUpdate
méthode pour vous.Lorsque des accessoires ou des modifications de l'état,
PureComponent
va faire un peu profonde comparaison sur les deux accessoires et de l'état.Component
sur l'autre main n'est pas à comparer les accessoires et l'état pour la prochaine sortie de la boîte. Ainsi, le composant va refaire le rendu par défaut à chaque fois queshouldComponentUpdate
est appelé.Peu Profonde Comparaison
Lors de la comparaison précédente, des accessoires et de l'état à côté, une faible profondeur de comparaison permettra de vérifier que les primitifs ont la même valeur (par exemple, 1 est égal à 1 ou que la vraie est égale à true) et que les références sont les mêmes entre les plus complexes javascript valeurs comme les objets et les tableaux.
Source: https://codeburst.io/when-to-use-component-or-purecomponent-a60cfad01a81
La principale différence que je vois c'est qu'un composant rerenders chaque fois que son parent rerenders, indépendamment du fait que la composante de l'accessoires et de l'état ont changé.
Un corps pur, d'autre part, ne sera pas rerender si son parent rerenders, à moins que le pur composant d'accessoires (ou l'état) ont changé.
Par exemple, disons que nous avons un composant de l'arbre avec une hiérarchie à trois niveaux: parents, enfants et petits-enfants.
Lorsque le parent accessoires sont modifiées de façon que les accessoires d'un seul enfant sont modifiées, puis:
Si il y a beaucoup de composants dans cette partie de l'arbre, cela peut signifier un gain de performances significatif.
Parfois, cependant, l'utilisation de composants purs, n'aura aucun impact. J'ai eu un tel cas, lorsque le parent a reçu ses accessoires à partir d'un redux de stocker et de nécessaires pour effectuer un calcul complexe de ses enfants accessoires. La mère a utilisé un flatlist afin de rendre ses enfants.
Le résultat est que chaque fois il y avait même un petit changement dans le redux magasin, l'ensemble de la flatlist tableau de la des enfants les données ont été recalculées. Cela signifie que pour chaque composant dans l'arbre, les accessoires ont été de nouveaux objets, même si les valeurs n'ont pas changé.
Dans ce cas, les composants purs, ne permettent pas de, et le gain de performance peut être obtenue que par l'utilisation de composants et de vérification dans les enfants, dans shouldComponentUpdate, si un rerender est nécessaire.