El hook useMemo
en React se utiliza para memorizar el resultado de funciones costosas y evitar cálculos innecesarios en cada renderizado. Sirve para optimizar el rendimiento de componentes que realizan operaciones complejas o que dependen de valores que cambian con poca frecuencia. useMemo
solo recalculará el valor cuando las dependencias indicadas cambien, permitiendo que React reutilice el resultado almacenado en lugar de volver a ejecutar la función.
useMemo
y cómo funciona?
useMemo
toma dos argumentos principales: una función de cálculo y un array de dependencias. La sintaxis es la siguiente:
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
useMemo
recalcule el valor.
useMemo
Se debe utilizar useMemo
cuando:
1. Existen operaciones de cálculo pesadas o funciones que toman tiempo en completarse.
2. El componente depende de objetos o arrays creados dinámicamente, que pueden causar renderizados innecesarios.
useMemo
import React, { useState, useMemo } from 'react';
function ExpensiveCalculationComponent() {
const [count, setCount] = useState(0);
const [input, setInput] = useState("");
// Función que simula una operación costosa
const expensiveCalculation = (num) => {
console.log("Realizando cálculo costoso...");
for (let i = 0; i < 1000000000; i++) {
num += 1;
}
return num;
};
// Memorizar el resultado de la operación costosa
const memoizedValue = useMemo(() => expensiveCalculation(count), [count]);
return (
<div>
<h1>Resultado del cálculo: {memoizedValue}</h1>
<button onClick={() => setCount(count + 1)}>Incrementar</button>
<input
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Escribe algo..."
/>
</div>
);
}
export default ExpensiveCalculationComponent;
En este ejemplo, la función expensiveCalculation
solo se ejecutará de nuevo cuando cambie el valor de count
, gracias a useMemo
. Cualquier cambio en el input no activará un nuevo cálculo.
useMemo
?
Aunque useMemo
ayuda a optimizar el rendimiento, no debe usarse en todos los casos. No aporta beneficios si el cálculo es sencillo o si no se tienen problemas de rendimiento. Un uso excesivo puede hacer que el código sea más difícil de leer y mantener.
Para más información sobre useMemo
, consulta la documentación oficial de React.
Jorge García
Fullstack developer