Maison >interface Web >js tutoriel >Optimiser les performances avec useMemo Hook de React : mémoriser des calculs coûteux
Le hook useMemo est un hook React intégré qui permet d'optimiser les performances de votre application en mémorisant des calculs coûteux. Cela garantit que certains calculs ne sont réexécutés que lorsque leurs dépendances changent, plutôt qu'à chaque rendu. Cela peut être particulièrement utile pour éviter les recalculs inutiles des valeurs lors du nouveau rendu du composant.
useMemo est utilisé pour mémoriser le résultat d'un appel de fonction coûteux et le recalculer uniquement lorsqu'une de ses dépendances a changé. Cela peut améliorer les performances en évitant des recalculs coûteux à chaque rendu.
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
Considérons un exemple simple où nous avons un calcul lent :
import React, { useState, useMemo } from 'react'; const ExpensiveComponent = () => { const [count, setCount] = useState(0); const [toggle, setToggle] = useState(false); const calculateExpensiveValue = (num) => { console.log('Calculating expensive value...'); return num * 2; }; // Memoizing the expensive function result const memoizedValue = useMemo(() => calculateExpensiveValue(count), [count]); return ( <div> <h2>Expensive Calculation: {memoizedValue}</h2> <button onClick={() => setCount(count + 1)}>Increment Count</button> <button onClick={() => setToggle(!toggle)}>Toggle</button> </div> ); }; export default ExpensiveComponent;
Explication :
Pourquoi utiliser useMemo ici ?
Vous devez utiliser useMemo lorsque :
Calculs coûteux : Lorsque vous avez des fonctions ou des opérations coûteuses à exécuter et que vous souhaitez éviter de les recalculer à moins que cela ne soit absolument nécessaire (par exemple, trier un grand tableau ou des calculs complexes).
Éviter les rendus inutiles : la mémorisation des valeurs transmises aux composants enfants peut empêcher les rendus inutiles du composant enfant. Si la valeur mémorisée ne change pas, React peut ignorer le rendu du composant enfant.
Optimisation des performances : Si un élément de logique spécifique implique des calculs qui ne dépendent que de certains accessoires ou états, useMemo peut garantir que la fonction s'exécute uniquement lorsque ses dépendances changent, optimisant ainsi les performances.
Par exemple, imaginez que vous restituez une liste d'éléments qui nécessitent un tri ou un filtrage, et que cette opération coûte cher.
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
Si vous avez un composant enfant qui accepte un accessoire résultant d'un calcul coûteux, vous pouvez mémoriser le calcul et transmettre le résultat comme accessoire.
import React, { useState, useMemo } from 'react'; const ExpensiveComponent = () => { const [count, setCount] = useState(0); const [toggle, setToggle] = useState(false); const calculateExpensiveValue = (num) => { console.log('Calculating expensive value...'); return num * 2; }; // Memoizing the expensive function result const memoizedValue = useMemo(() => calculateExpensiveValue(count), [count]); return ( <div> <h2>Expensive Calculation: {memoizedValue}</h2> <button onClick={() => setCount(count + 1)}>Increment Count</button> <button onClick={() => setToggle(!toggle)}>Toggle</button> </div> ); }; export default ExpensiveComponent;
Si votre composant a plusieurs valeurs d'état mais qu'une seule affecte un calcul coûteux, vous pouvez utiliser useMemo pour éviter de recalculer cette valeur à moins que son état pertinent n'ait changé.
Bien que useMemo et useCallback soient utilisés pour la mémorisation, leurs objectifs diffèrent :
Hook | Purpose | Example Usage |
---|---|---|
useMemo | Memoizes the result of a function call or calculation | Memoizing a computed value |
useCallback | Memoizes the function itself | Preventing the creation of a new function on each render |
Voici un exemple d'utilisation de useMemo pour mémoriser une liste triée :
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
Le hook useMemo est un outil essentiel pour optimiser les performances dans les applications React. Il garantit que les calculs coûteux ne sont effectués que lorsque cela est nécessaire, ce qui rend vos composants plus efficaces. Cependant, il doit être utilisé de manière réfléchie, car une utilisation excessive peut entraîner une complexité inutile et une dégradation potentielle des performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!