BTS SIO2D
  • Accueil
  • Connexion
16 décembre 2024 par Ivann Pena

Optimisation des performances en React

Optimisation des performances en React
16 décembre 2024 par Ivann Pena

Introduction

React est conçu pour être performant, mais certaines pratiques peuvent ralentir une application, surtout à grande échelle. L'optimisation des performances consiste à utiliser des stratégies permettant de minimiser les rendus inutiles, de réduire la charge du CPU et d'améliorer la réactivité.

Table des matières

Toggle
  • 1. Utiliser le React.memo pour les composants fonctionnels
  • 2. Utiliser le useMemo pour mémoriser les résultats des calculs
  • 3. Utiliser le useCallback pour mémoriser les fonctions
  • 4. Optimiser les listes avec React.PureComponent
  • 5. Code Splitting et Lazy Loading
  • 6. Virtualisation des listes avec react-window ou react-virtualized
  • 7. Éviter les rendus non nécessaires avec shouldComponentUpdate
  • 8. Optimisation du rendu avec les Clés dans les listes
  • Résumé des stratégies d'optimisation des performances

1. Utiliser le React.memo pour les composants fonctionnels

Qu'est-ce que c'est ? React.memo est une fonction d'ordre supérieur qui permet d'éviter des rendus inutiles d'un composant fonctionnel si ses props n'ont pas changé.

Quand l'utiliser ? Utilise React.memo lorsque tu as des composants qui reçoivent des props qui ne changent pas fréquemment.

const MyComponent = React.memo(function MyComponent({ name }) {
  console.log('Rendering MyComponent');
  return 
{name}
; });

2. Utiliser le useMemo pour mémoriser les résultats des calculs

Qu'est-ce que c'est ? useMemo est un hook qui permet de mémoriser le résultat d'une fonction coûteuse en termes de calcul et de ne recalculer la valeur que lorsque les dépendances changent.

Quand l'utiliser ? Utilise useMemo lorsque tu as des calculs lourds ou des objets qui sont passés en props à des composants enfants.

const expensiveValue = useMemo(() => {
  return expensiveComputation(a, b);
}, [a, b]);
    

3. Utiliser le useCallback pour mémoriser les fonctions

Qu'est-ce que c'est ? useCallback est un hook qui permet de mémoriser une fonction et de ne la recréer que lorsque ses dépendances changent.

Quand l'utiliser ? Utilise useCallback lorsque tu passes des fonctions en props à des composants enfants pour éviter que ces composants ne se re-rendent inutilement.

const handleClick = useCallback(() => {
  console.log('Button clicked');
}, []); // `handleClick` ne change jamais
    

4. Optimiser les listes avec React.PureComponent

Qu'est-ce que c'est ? React.PureComponent est une classe de base pour les composants qui implémentent une comparaison superficielle des props et de l'état (shallow comparison). Cela permet de rendre uniquement les composants dont les props ou l'état ont changé.

Quand l'utiliser ? Utilise PureComponent pour les composants de type classe où tu souhaites éviter les rendus inutiles.

class MyComponent extends React.PureComponent {
  render() {
    return 
{this.props.name}
; } }

5. Code Splitting et Lazy Loading

Qu'est-ce que c'est ? Le code splitting permet de diviser le code JavaScript en plusieurs morceaux (chunks), de manière à ne charger que le code nécessaire à un moment donné. Le lazy loading permet de charger un composant ou une ressource seulement lorsqu'il/elle est nécessaire.

Quand l'utiliser ? Utilise le code splitting et lazy loading pour améliorer le temps de chargement de l'application, surtout pour les applications React complexes.

import React, { Suspense, lazy } from 'react';

const LazyComponent = lazy(() => import('./LazyComponent'));

function App() {
  return (
    Loading...
}> ); }

6. Virtualisation des listes avec react-window ou react-virtualized

Qu'est-ce que c'est ? La virtualisation consiste à rendre uniquement les éléments visibles dans une liste au lieu de rendre tous les éléments de la liste, ce qui peut améliorer considérablement les performances lors du rendu de longues listes.

Quand l'utiliser ? Utilise la virtualisation des listes pour les grandes listes où chaque élément peut être coûteux à rendre.

import { FixedSizeList as List } from 'react-window';

function App() {
  return (
    
      {({ index, style }) => 
Item {index}
}
); }

7. Éviter les rendus non nécessaires avec shouldComponentUpdate

Qu'est-ce que c'est ? La méthode shouldComponentUpdate permet de contrôler manuellement si un composant doit se re-rendre ou non en fonction des props et de l'état.

Quand l'utiliser ? Utilise shouldComponentUpdate dans des composants de classe lorsque tu veux avoir un contrôle total sur les rendus.

class MyComponent extends React.Component {
  shouldComponentUpdate(nextProps, nextState) {
    return nextProps.name !== this.props.name;
  }

  render() {
    return 
{this.props.name}
; } }

8. Optimisation du rendu avec les Clés dans les listes

Qu'est-ce que c'est ? Lors de l'affichage de listes dynamiques avec map, React utilise des clés pour identifier les éléments et optimiser les rendus. Utilise des clés uniques pour améliorer les performances de mise à jour.

Quand l'utiliser ? Utilise des clés uniques lorsque tu rends des éléments dans une liste afin que React puisse gérer efficacement les ajouts, suppressions et réorganisations d'éléments.

const items = ['Item 1', 'Item 2', 'Item 3'];

return (
  
    {items.map((item, index) => (
  • {item}
  • ))}
);

Résumé des stratégies d'optimisation des performances

  • React.memo : Pour éviter les rendus inutiles des composants fonctionnels.
  • useMemo : Pour mémoriser les résultats des calculs coûteux.
  • useCallback : Pour éviter la recréation de fonctions à chaque rendu.
  • React.PureComponent : Pour les composants de classe afin d'éviter les rendus inutiles.
  • Code Splitting et Lazy Loading : Pour charger uniquement les parties nécessaires de l'application.
  • Virtualisation des listes
Article précédentLes nouveautés de React 18Article suivant Le Context API vs Redux

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13