馃摑 useMemo en React: optimizaci贸n de c谩lculos en componentes
El Hook useMemo permite memorizar el resultado de c谩lculos costosos en React, evitando que se recalculen en cada renderizado si sus dependencias no han cambiado. Esto mejora el rendimiento en componentes que realizan operaciones complejas.
1️⃣ Sintaxis b谩sica de useMemo
const valorMemorizado = useMemo(() => {
// c谩lculo costoso
return resultado;
}, [dependencias]);
Donde dependencias son los valores que, al cambiar, har谩n que el c谩lculo se vuelva a ejecutar.
2️⃣ Ejemplo pr谩ctico: c谩lculo de factorial
import { useState, useMemo } from "react";
function Factorial() {
const [numero, setNumero] = useState(5);
const [contador, setContador] = useState(0);
const factorial = useMemo(() => {
console.log("Calculando factorial...");
const calcular = n => (n <= 1 ? 1 : n * calcular(n - 1));
return calcular(numero);
}, [numero]);
return (
<div>
<h2>Factorial de {numero}: {factorial}</h2>
<input type="number" value={numero} onChange={e => setNumero(parseInt(e.target.value))} />
<button onClick={() => setContador(c => c + 1)>Incrementar contador ({contador})</button>
</div>
);
}
export default Factorial;
Ejemplo visual de useMemo
Factorial: 120
3️⃣ Cu谩ndo usar useMemo
- ⚡ Para c谩lculos pesados que dependen de valores espec铆ficos.
- 馃 Para evitar recomputaciones innecesarias en renderizados frecuentes.
- 馃摝 脷til en listas grandes, filtrados, b煤squedas o c谩lculos matem谩ticos complejos.
4️⃣ Ejemplo avanzado: lista filtrada memorizada
import { useState, useMemo } from "react";
function ListaFiltrada({ items }) {
const [filtro, setFiltro] = useState("");
const itemsFiltrados = useMemo(() => {
console.log("Filtrando lista...");
return items.filter(item => item.toLowerCase().includes(filtro.toLowerCase()));
}, [items, filtro]);
return (
<div>
<input type="text" value={filtro} onChange={e => setFiltro(e.target.value)} placeholder="Buscar..." />
<ul>
{itemsFiltrados.map((item, index) => <li key={index}>{item}</li>)}
</ul>
</div>
);
}
export default ListaFiltrada;
5️⃣ Resumen
- 馃摑 useMemo memoriza resultados de c谩lculos costosos.
- ⚡ Mejora el rendimiento evitando recomputaciones innecesarias.
- ✅ Ideal para listas grandes, filtrados y operaciones pesadas dentro de componentes.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias