useMemo y useCallback son dos poderosos enlaces de React que desempeñan un papel crucial para evitar re-renderizaciones innecesarias que resultan en la optimización del rendimiento de los componentes. Son herramientas esenciales para que los desarrolladores creen aplicaciones React eficientes y con capacidad de respuesta.
En esta guía profundizaremos en la explicación de useMemo y useCallback, cuáles son sus similitudes y en qué se diferencian entre sí. Entenderemos cómo implementarlos, cuándo usar cada uno.
Por lo general, en React la mayoría de los cálculos son rápidos, pero a veces tienes un cálculo en una matriz muy grande o algún cálculo costoso que no es necesario ejecutar en cada repetición.
los ganchos useMemo y useCallback pueden ayudar a resolver este problema al almacenar en caché esos costosos cálculos entre re-renderizaciones.
useMemo es un gancho de React que almacena en caché el resultado de un cálculo entre renderizaciones y requiere dos argumentos:
Para almacenar en caché un cálculo entre renderizaciones, envuélvalo en un gancho useMemo en el nivel superior del componente.
useMemo(fn, dependencias)
const App = () => { const useMemo(() => { filterTodo(todos, tab) }, [todos, tab]) return(...) } export default App
Observe que el primer parámetro de useMemo es una función sin parámetros.
La primera vez que React calculará el valor del resultado del primer parámetro de useMemo, luego memorizará el segundo parámetro, que es la lista de dependencias. React almacenará en caché el resultado calculado entre renderizaciones y solo volverá a calcular el resultado cuando cambie uno de los valores de dependencia.
el gancho useCallback es el mismo que el gancho useMemo con la única diferencia de que este gancho almacenará en caché la función (primer parámetro para useCallback) sin calcular el valor. Además, la función puede aceptar parámetros a diferencia de useMemo.
Para usar useCallback necesitas pasar parámetros:
const cachedFn = useCallback(fn, dependencias)
import { useCallback } from 'react'; export default function ProductPage({ productId }) { const handleSubmit = useCallback((orderDetails) => { post('/product/' productId '/buy', { referrer, orderDetails, }); }, [productId, referrer]);
Si lo que más le preocupa es optimizar el resultado del cálculo, utilice useMemo.
Si lo que más le preocupa es evitar repeticiones innecesarias debido a cambios de funciones, utilice useCallback.
A veces tendrá un componente principal que deberá volver a renderizarse, lo que también dará como resultado la nueva renderización del componente secundario. Es posible almacenar en caché un componente usando memo.
Supongamos que tenemos un componente Todolist con estado de tema y un componente Lista como hijo. Siempre que el estado del tema cambia, el componente de lista se vuelve a renderizar, lo cual no es necesario. para resolver este problema utilice memo.
envolvemos el componente funcional de List con memo.
export default function TodoList({ todos, tab, theme }) { // ... return (); }
import { memo } from 'react'; const List = memo(function List({ items }) { // ... });
En esta guía completa, comprendemos los ganchos useMemo y useCallback, cómo usar cada uno de ellos, cuándo usarlos y explicamos sus beneficios para optimizar el rendimiento de la aplicación React.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3