{"id":51765,"date":"2022-05-10T09:04:49","date_gmt":"2022-05-10T07:04:49","guid":{"rendered":"https:\/\/kinqsta.com\/es\/?p=51765&#038;preview=true&#038;preview_id=51765"},"modified":"2025-01-20T11:36:43","modified_gmt":"2025-01-20T10:36:43","slug":"react-usecallback","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/","title":{"rendered":"Aprender a domar useCallback Hook de React"},"content":{"rendered":"<p>No es ning\u00fan secreto que <a href=\"https:\/\/kinqsta.com\/es\/blog\/herramientas-desarrollo-web\/#27-reactjs\">React.js se ha hecho muy popular<\/a> en los \u00faltimos a\u00f1os. Ahora es la <a href=\"https:\/\/kinqsta.com\/es\/blog\/bibliotecas-javascript\/#reactjs\">biblioteca JavaScript elegida<\/a> por muchos de los actores m\u00e1s destacados de Internet, como Facebook y WhatsApp.<\/p>\n<p>Una de las principales razones de su auge fue la introducci\u00f3n de los ganchos en la <a href=\"https:\/\/github.com\/facebook\/react\/blob\/main\/CHANGELOG.md#1680-february-6-2019\" target=\"_blank\" rel=\"noopener noreferrer\">versi\u00f3n 16.8<\/a>. Los ganchos de React te permiten aprovechar la funcionalidad de React sin tener que escribir componentes de clase. Ahora los componentes funcionales con ganchos se han convertido en la estructura a la que recurren los desarrolladores para trabajar con React.<\/p>\n<p>En esta entrada del blog, profundizaremos en un gancho espec\u00edfico &#8211; <code>useCallback<\/code> &#8211; porque toca una parte fundamental de la programaci\u00f3n funcional conocida como memoizaci\u00f3n. Sabr\u00e1s exactamente c\u00f3mo y cu\u00e1ndo utilizar el gancho <code>useCallback<\/code> y aprovechar al m\u00e1ximo sus capacidades de mejora del rendimiento.<\/p>\n<p>\u00bfPreparado? \u00a1Vamos a sumergirnos!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>\u00bfQu\u00e9 es la memoizaci\u00f3n?<\/h2>\n<p>La memoizaci\u00f3n es cuando una funci\u00f3n compleja almacena su salida para que la pr\u00f3xima vez que se llame con la misma entrada. Es <a href=\"https:\/\/kinqsta.com\/es\/blog\/que-es-la-cache\/\">similar al almacenamiento en cach\u00e9<\/a>, pero a un nivel m\u00e1s local. Puede omitir cualquier c\u00e1lculo complejo y devolver la salida m\u00e1s r\u00e1pidamente, ya que est\u00e1 calculada.<\/p>\n<p>Esto puede tener un efecto significativo en la asignaci\u00f3n de memoria y el rendimiento, y esa tensi\u00f3n es lo que el gancho <code>useCallback<\/code> pretende aliviar.<\/p>\n<h3>UseCallback de React frente a useMemo<\/h3>\n<p>Llegados a este punto, merece la pena mencionar que <code>useCallback<\/code> se empareja muy bien con otro gancho llamado <code>useMemo<\/code>. Hablaremos de ambos, pero en este art\u00edculo vamos a centrarnos en <code>useCallback<\/code> como tema principal.<\/p>\n<p>La diferencia clave es que <code>useMemo<\/code> devuelve un valor memoizado, mientras que <code>useCallback<\/code> devuelve una funci\u00f3n memoizada. Esto significa que <code>useMemo<\/code> se utiliza para almacenar un valor calculado, mientras que <code>useCallback<\/code> devuelve una funci\u00f3n que puedes llamar m\u00e1s tarde.<\/p>\n<p>Estos ganchos te devolver\u00e1n una versi\u00f3n en cach\u00e9 a menos que cambie alguna de sus dependencias (por ejemplo, el estado o las props).<\/p>\n<p>Veamos las dos funciones en acci\u00f3n:<\/p>\n<pre><code class=\"language-javascript\">import { useMemo, useCallback } from 'react'\nconst values = [3, 9, 6, 4, 2, 1]\n\n\/\/ This will always return the same value, a sorted array. Once the values array changes then this will recompute.\nconst memoizedValue = useMemo(() =&gt; values.sort(), [values])\n\n\/\/ This will give me back a function that can be called later on. It will always return the same result unless the values array is modified.\nconst memoizedFunction = useCallback(() =&gt; values.sort(), [values])<\/code><\/pre>\n<p>El fragmento de c\u00f3digo anterior es un ejemplo artificial, pero muestra la diferencia entre las dos devoluciones de llamada:<\/p>\n<ol>\n<li><code>memoizedValue<\/code> se convertir\u00e1 en la matriz <code>[1, 2, 3, 4, 6, 9]<\/code>. Mientras la variable de valores permanezca, tambi\u00e9n lo har\u00e1 <code>memoizedValue<\/code>, y nunca se volver\u00e1 a calcular.<\/li>\n<li><code>memoizedFunction<\/code> ser\u00e1 una funci\u00f3n que devolver\u00e1 el array <code>[1, 2, 3, 4, 6, 9]<\/code>.<\/li>\n<\/ol>\n<p>Lo bueno de estas dos devoluciones de llamada es que se almacenan en la cach\u00e9 y permanecen hasta que cambia la matriz de dependencia. Esto significa que, en caso de renderizaci\u00f3n, no se recolectar\u00e1 la basura.<\/p>\n\n<h2>Renderizaci\u00f3n y React<\/h2>\n<p>\u00bfPor qu\u00e9 es importante la memoizaci\u00f3n en React?<\/p>\n<p>Tiene que ver con la forma en que React renderiza sus componentes. React utiliza un DOM virtual almacenado en memoria para comparar datos y decidir qu\u00e9 actualizar.<\/p>\n<p>El DOM virtual ayuda a React con el rendimiento y mantiene tu aplicaci\u00f3n r\u00e1pida. Por defecto, si cualquier valor de tu componente cambia, todo el componente se volver\u00e1 a renderizar. Esto hace que React sea \u00abreactivo\u00bb a la entrada del usuario y permite que la pantalla se actualice sin recargar la p\u00e1gina.<\/p>\n<p>No querr\u00e1s renderizar tu componente porque los cambios no afectar\u00e1n a ese componente. Aqu\u00ed es donde la memoizaci\u00f3n a trav\u00e9s de <code>useCallback<\/code> y <code>useMemo<\/code> resulta \u00fatil.<\/p>\n<p>Cuando React vuelve a renderizar tu componente, tambi\u00e9n recrea las funciones que has declarado dentro de tu componente.<\/p>\n<p>Ten en cuenta que al comparar la igualdad de una funci\u00f3n con otra funci\u00f3n, siempre ser\u00e1n falsas. Como una funci\u00f3n tambi\u00e9n es un objeto, s\u00f3lo se igualar\u00e1 a s\u00ed misma:<\/p>\n<pre><code class=\"language-javascript\">\/\/ these variables contain the exact same function but they are not equal\nconst hello = () =&gt; console.log('Hello Matt')\nconst hello2 = () =&gt; console.log('Hello Matt')\n\nhello === hello2 \/\/ false\nhello === hello \/\/ true<\/code><\/pre>\n<p>En otras palabras, cuando React vuelve a renderizar tu componente, ver\u00e1 cualquier funci\u00f3n declarada en tu componente como una nueva funci\u00f3n.<\/p>\n<p>Esto est\u00e1 bien la mayor parte del tiempo, y las funciones simples son f\u00e1ciles de calcular y no afectar\u00e1n al rendimiento. Pero otras veces, cuando no quieras que la funci\u00f3n se vea como una funci\u00f3n nueva, puedes confiar en que <code>useCallback<\/code> te ayuda.<\/p>\n<p>Quiz\u00e1 pienses: \u00ab\u00bfCu\u00e1ndo no querr\u00eda que una funci\u00f3n se viera como una funci\u00f3n nueva?\u00bb Bueno, hay ciertos casos en los que <code>useCallback<\/code> tiene m\u00e1s sentido:<\/p>\n<ol>\n<li>Est\u00e1s pasando la funci\u00f3n a otro componente que tambi\u00e9n est\u00e1 memoizado (<code>useMemo<\/code>)<\/li>\n<li>Tu funci\u00f3n tiene un estado interno que necesita recordar<\/li>\n<li>Tu funci\u00f3n es una dependencia de otro gancho, como <code>useEffect<\/code> por ejemplo<\/li>\n<\/ol>\n<h2>Ventajas de rendimiento de React useCallback<\/h2>\n<p>Cuando <code>useCallback<\/code> se utiliza adecuadamente, puede ayudar a acelerar tu aplicaci\u00f3n y evitar que los componentes se vuelvan a renderizar si no es necesario.<\/p>\n<p>Digamos, por ejemplo, que tienes un componente que obtiene una gran cantidad de datos y que es responsable de mostrar esos datos en forma de <a href=\"https:\/\/kinqsta.com\/es\/blog\/tablas-graficos-wordpress\/\">gr\u00e1fico<\/a>, como \u00e9ste:<\/p>\n<figure>\n<p><figure id=\"attachment_110702\" aria-describedby=\"caption-attachment-110702\" style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-110702\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2021\/12\/react-bar-graph.png\" alt=\"A colorful bar graph comparing the overall transaction time of PHP, MySQL, Reddis, and external (other) in milliseconds.\" width=\"1600\" height=\"546\"><figcaption id=\"caption-attachment-110702\" class=\"wp-caption-text\">Gr\u00e1fico de barras generado con un componente React.<\/figcaption><\/figure><\/figure>\n<p>Supongamos que el componente principal de tu visualizaci\u00f3n de datos se vuelve a renderizar, pero los cambios de accesorios o de estado no afectan a ese componente. En ese caso, es probable que no quieras o necesites volver a renderizarlo y recuperar todos los datos. Evitar este re-renderizado y refetch puede ahorrar el ancho de banda de tu usuario y proporcionar una experiencia de usuario m\u00e1s fluida.<\/p>\n<h2>Inconvenientes de React useCallback<\/h2>\n<p>Aunque este gancho puede ayudarte a mejorar el rendimiento, tambi\u00e9n tiene sus inconvenientes. Algunas cosas que debes tener en cuenta antes de utilizar <code>useCallback<\/code> (y <code>useMemo<\/code>) son:<\/p>\n<ul>\n<li><strong>Recogida de basura:<\/strong> Las otras funciones que no est\u00e9n ya memoizadas ser\u00e1n desechadas por React para liberar memoria.<\/li>\n<li><strong>Asignaci\u00f3n de memoria:<\/strong> De forma similar a la recogida de basura, cuantas m\u00e1s funciones memoizadas tengas, m\u00e1s memoria se necesitar\u00e1. Adem\u00e1s, cada vez que utilizas estas devoluciones de llamada, hay un mont\u00f3n de c\u00f3digo dentro de React que necesita utilizar a\u00fan m\u00e1s memoria para proporcionarte la salida en cach\u00e9.<\/li>\n<li><strong>Complejidad del c\u00f3digo:<\/strong> Cuando empiezas a envolver funciones en estos <a href=\"https:\/\/kinqsta.com\/es\/blog\/wordpress-hooks\/\">ganchos<\/a>, aumentas inmediatamente la complejidad de tu c\u00f3digo. Ahora se requiere una mayor comprensi\u00f3n de por qu\u00e9 se utilizan estos ganchos y la confirmaci\u00f3n de que se utilizan correctamente.<\/li>\n<\/ul>\n<p>Ser consciente de los anteriores puede ahorrarte el dolor de cabeza de tropezar con ellos t\u00fa mismo. Cuando consideres emplear <code>useCallback<\/code>, aseg\u00farate de que las ventajas de rendimiento ser\u00e1n mayores que los inconvenientes.<\/p>\n<h2>Ejemplo de React useCallback<\/h2>\n<p>A continuaci\u00f3n se muestra una configuraci\u00f3n sencilla con un componente Bot\u00f3n y un componente Contador. El Contador tiene dos partes de estado y genera dos componentes Bot\u00f3n, cada uno de los cuales actualizar\u00e1 una parte distinta del estado de los componentes Contador.<\/p>\n<p>El componente Button recibe dos props: <code>handleClick<\/code> y nombre. Cada vez que el Button se renderice, se <a href=\"https:\/\/kinqsta.com\/es\/blog\/inspeccion-elementos\/#touring-the-inspect-element-panel\">registrar\u00e1 en la consola<\/a>.<\/p>\n<pre><code class=\"language-javascript\">import { useCallback, useState } from 'react'\n\nconst Button = ({handleClick, name}) =&gt; {\n  console.log(`${name} rendered`)\n  return &lt;button onClick={handleClick}&gt;{name}&lt;\/button&gt;\n}\n\nconst Counter = () =&gt; {\n\nconsole.log('counter rendered')\n  const [countOne, setCountOne] = useState(0)\n  const [countTwo, setCountTwo] = useState(0)\n  return (\n    &lt;&gt;\n      {countOne} {countTwo}\n      &lt;Button handleClick={() =&gt; setCountOne(countOne + 1)} name=\"button1\" \/&gt;\n      &lt;Button handleClick={() =&gt; setCountTwo(countTwo + 1)} name=\"button1\" \/&gt;\n    &lt;\/&gt;\n  )\n}<\/code><\/pre>\n<p>En este ejemplo, cada vez que hagas clic en uno de los dos botones, ver\u00e1s esto en la consola:<\/p>\n<pre><code class=\"language-javascript\">\/\/ counter rendered\n\n\/\/ button1 rendered\n\/\/ button2 rendered<\/code><\/pre>\n<p>Ahora, si aplicamos <code>useCallback<\/code> a nuestras funciones <code>handleClick<\/code> y envolvemos nuestro Button en <code>React.memo<\/code>, podemos ver lo que nos proporciona <code>useCallback<\/code>. <code>React.memo<\/code> es similar a <code>useMemo<\/code> y nos permite memoizar un componente.<\/p>\n<pre><code class=\"language-javascript\">import { useCallback, useState } from 'react'\n\nconst Button = React.memo(({handleClick, name}) =&gt; {\n  console.log(`${name} rendered`)\n  return &lt;button onClick={handleClick}&gt;{name}&lt;\/button&gt;\n})\n\nconst Counter = () =&gt; {\n  console.log('counter rendered')\n  const [countOne, setCountOne] = useState(0)\n  const [countTwo, setCountTwo] = useState(0)\n  const memoizedSetCountOne = useCallback(() =&gt; setCountOne(countOne + 1), [countOne)\n  const memoizedSetCountTwo = useCallback(() =&gt; setCountTwo(countTwo + 1), [countTwo])\n  return (\n    &lt;&gt;\n        {countOne} {countTwo}\n        &lt;Button handleClick={memoizedSetCountOne} name=\"button1\" \/&gt;\n        &lt;Button handleClick={memoizedSetCountTwo} name=\"button1\" \/&gt;\n    &lt;\/&gt;\n  )\n}<\/code><\/pre>\n<p>Ahora, cuando hagamos clic en cualquiera de los botones, s\u00f3lo veremos el bot\u00f3n que hemos pulsado para entrar en la consola:<\/p>\n<pre><code class=\"language-javascript\">\/\/ counter rendered\n\n\/\/ button1 rendered\n\n\/\/ counter rendered\n\n\/\/ button2 rendered<\/code><\/pre>\n<p>Hemos aplicado la memoizaci\u00f3n a nuestro componente bot\u00f3n, y los valores prop que se le pasan son vistos como iguales. Las dos funciones de <code>handleClick<\/code> se almacenan en cach\u00e9 y ser\u00e1n vistas como la misma funci\u00f3n por React hasta que cambie el valor de un elemento de la matriz de dependencia (por ejemplo, <code>countOne<\/code>, <code>countTwo<\/code>).<\/p>\n\n<h2>Resumen<\/h2>\n<p>Aunque <code>useCallback<\/code> y <code>useMemo<\/code> son geniales, recuerda que tienen casos de uso espec\u00edficos: no deber\u00edas envolver todas las funciones con estos ganchos. Si la funci\u00f3n es compleja desde el punto de vista computacional, una dependencia de otro gancho o un accesorio que se pasa a un componente memoizado son buenos indicadores de que quiz\u00e1 debas recurrir a <code>useCallback<\/code>.<\/p>\n<p>Esperamos que este art\u00edculo te haya ayudado a entender esta funcionalidad avanzada de React y a ganar m\u00e1s confianza con la programaci\u00f3n funcional en el camino<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No es ning\u00fan secreto que React.js se ha hecho muy popular en los \u00faltimos a\u00f1os. Ahora es la biblioteca JavaScript elegida por muchos de los actores &#8230;<\/p>\n","protected":false},"author":239,"featured_media":51766,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1296,1321],"class_list":["post-51765","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-frameworks-javascript","topic-react"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Aprender a domar useCallback Hook de React<\/title>\n<meta name=\"description\" content=\"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aprender a domar useCallback Hook de React\" \/>\n<meta property=\"og:description\" content=\"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T07:04:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-20T10:36:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Sobieray\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Sobieray\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\"},\"author\":{\"name\":\"Matthew Sobieray\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\"},\"headline\":\"Aprender a domar useCallback Hook de React\",\"datePublished\":\"2022-05-10T07:04:49+00:00\",\"dateModified\":\"2025-01-20T10:36:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\"},\"wordCount\":1435,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\",\"name\":\"Aprender a domar useCallback Hook de React\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\",\"datePublished\":\"2022-05-10T07:04:49+00:00\",\"dateModified\":\"2025-01-20T10:36:43+00:00\",\"description\":\"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinqsta.com\/es\/secciones\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Aprender a domar useCallback Hook de React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/es\/#website\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\",\"name\":\"Matthew Sobieray\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d0b3b5a416553d2677fc2882afcc9d16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d0b3b5a416553d2677fc2882afcc9d16?s=96&d=mm&r=g\",\"caption\":\"Matthew Sobieray\"},\"description\":\"Matthew works for Kinsta as a Development Team Lead from his home office in Denver, Colorado. He loves to learn, especially when it comes to web development.\",\"url\":\"https:\/\/kinqsta.com\/es\/blog\/author\/mattsobieray\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Aprender a domar useCallback Hook de React","description":"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/","og_locale":"es_ES","og_type":"article","og_title":"Aprender a domar useCallback Hook de React","og_description":"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.","og_url":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2022-05-10T07:04:49+00:00","article_modified_time":"2025-01-20T10:36:43+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","type":"image\/jpeg"}],"author":"Matthew Sobieray","twitter_card":"summary_large_image","twitter_description":"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.","twitter_image":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Matthew Sobieray","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/"},"author":{"name":"Matthew Sobieray","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694"},"headline":"Aprender a domar useCallback Hook de React","datePublished":"2022-05-10T07:04:49+00:00","dateModified":"2025-01-20T10:36:43+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/"},"wordCount":1435,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/","url":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/","name":"Aprender a domar useCallback Hook de React","isPartOf":{"@id":"https:\/\/kinqsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","datePublished":"2022-05-10T07:04:49+00:00","dateModified":"2025-01-20T10:36:43+00:00","description":"\u00bfTe preguntas c\u00f3mo maneja React la memoizaci\u00f3n? Mejora tus conocimientos de React aprendiendo a aprovechar useCallback hook para evitar que se vuelva a renderizar.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#primaryimage","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/05\/react-usecallback.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/es\/blog\/react-usecallback\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinqsta.com\/es\/secciones\/react\/"},{"@type":"ListItem","position":3,"name":"Aprender a domar useCallback Hook de React"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/es\/#website","url":"https:\/\/kinqsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinqsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694","name":"Matthew Sobieray","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinqsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d0b3b5a416553d2677fc2882afcc9d16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d0b3b5a416553d2677fc2882afcc9d16?s=96&d=mm&r=g","caption":"Matthew Sobieray"},"description":"Matthew works for Kinsta as a Development Team Lead from his home office in Denver, Colorado. He loves to learn, especially when it comes to web development.","url":"https:\/\/kinqsta.com\/es\/blog\/author\/mattsobieray\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/51765","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/users\/239"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/comments?post=51765"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/51765\/revisions"}],"predecessor-version":[{"id":52182,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/posts\/51765\/revisions\/52182"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/translations\/es"},{"href":"https:\/\/kinqsta.com\/es\/wp-json\/kinsta\/v1\/posts\/51765\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media\/51766"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/media?parent=51765"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/tags?post=51765"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/es\/wp-json\/wp\/v2\/topic?post=51765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}