{"id":54228,"date":"2022-05-10T08:05:28","date_gmt":"2022-05-10T07:05:28","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=54228&#038;preview=true&#038;preview_id=54228"},"modified":"2023-02-22T15:44:35","modified_gmt":"2023-02-22T14:44:35","slug":"usecallback-react","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/","title":{"rendered":"Come Utilizzare l&#8217;Hook useCallback di React"},"content":{"rendered":"<p>Non \u00e8 un segreto che <a href=\"https:\/\/kinsta.com\/it\/blog\/strumenti-sviluppo-web\/#27-reactjs\">React.js \u00e8 diventato molto popolare<\/a> negli ultimi anni. Ora \u00e8 la <a href=\"https:\/\/kinsta.com\/it\/blog\/librerie-javascript\/#reactjs\">libreria JavaScript scelta<\/a> da molti degli attori pi\u00f9 importanti di internet, compresi Facebook e WhatsApp.<\/p>\n<p>Una delle ragioni principali della sua ascesa \u00e8 stata l&#8217;introduzione degli hook a partire dalla <a href=\"https:\/\/github.com\/facebook\/react\/blob\/main\/CHANGELOG.md#1680-february-6-2019\" target=\"_blank\" rel=\"noopener noreferrer\">versione 16.8<\/a>. Gli hook permettono di attingere alle funzionalit\u00e0 di React senza scrivere componenti di classe. Ora i componenti funzionali con gli hook sono diventati la struttura preferita dagli sviluppatori che lavorano con React.<\/p>\n<p>In questo articolo, analizzeremo approfonditamente uno specifico hook &#8211; <code>useCallback<\/code> &#8211; perch\u00e9 tocca una parte fondamentale della programmazione funzionale conosciuta come memoization. Saprete esattamente come e quando utilizzare l&#8217;hook <code>useCallback<\/code> e sfruttarlo al massimo per migliorare le prestazioni.<\/p>\n<p>Siete pronti? Cominciamo!<\/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>Cos&#8217;\u00e8 la Memoizzazione?<\/h2>\n<p>La memoizzazione \u00e8 quando una funzione complessa memorizza il suo output in modo che la volta successiva venga chiamata con lo stesso input. \u00c8 <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-la-cache\/\">simile al caching<\/a>, ma ad un livello pi\u00f9 locale. Pu\u00f2 saltare qualsiasi calcolo e restituire l&#8217;output pi\u00f9 velocemente perch\u00e9 questo \u00e8 gi\u00e0 calcolato.<\/p>\n<p>Questo pu\u00f2 avere un effetto significativo sull&#8217;allocazione della memoria e sulle prestazioni, e questa tensione \u00e8 ci\u00f2 che l&#8217;hook <code>useCallback<\/code> ha lo scopo di alleviare.<\/p>\n<h3>React&#8217;s useCallback vs useMemo<\/h3>\n<p>A questo punto, vale la pena dire che <code>useCallback<\/code> si abbina bene con un altro hook chiamato <code>useMemo<\/code>. Li analizzeremo entrambi, ma in questo articolo ci concentreremo su <code>useCallback<\/code>.<\/p>\n<p>La differenza principale \u00e8 che <code>useMemo<\/code> restituisce un valore memoizzato, mentre <code>useCallback<\/code> restituisce una funzione memoizzata. Ci\u00f2 significa che <code>useMemo<\/code> \u00e8 utilizzato per memoizzare un valore calcolato, mentre <code>useCallback<\/code> restituisce una funzione che potete invocare in seguito.<\/p>\n<p>Questi hook vi restituiranno una versione in cache a meno che una delle dipendenze (ad esempio lo stato o le propriet\u00e0) non cambi.<\/p>\n<p>Diamo un&#8217;occhiata alle due funzioni in azione:<\/p>\n<pre><code class=\"language-javascript\">import { useMemo, useCallback } from 'react'\nconst values = [3, 9, 6, 4, 2, 1]\n\n\/\/ Questo restituir\u00e0 sempre lo stesso valore, un array ordinato. Quando l'array dei valori cambia, viene ricalcolato.\nconst memoizedValue = useMemo(() =&gt; values.sort(), [values])\n\n\/\/ Questo mi restituir\u00e0 una funzione che potr\u00e0 essere richiamata in seguito. Restituir\u00e0 sempre lo stesso risultato, a meno che l'array dei valori non venga modificato.\nconst memoizedFunction = useCallback(() =&gt; values.sort(), [values])<\/code><\/pre>\n<p>Lo snippet di codice qui sopra \u00e8 un esempio artificioso ma mostra la differenza tra le due callback:<\/p>\n<ol>\n<li><code>memoizedValue<\/code> diventer\u00e0 l&#8217;array <code>[1, 2, 3, 4, 6, 9]<\/code>. Finch\u00e9 la variabile dei valori rimane, lo far\u00e0 anche <code>memoizedValue<\/code> e non si ricompatter\u00e0 mai.<\/li>\n<li><code>memoizedFunction<\/code> sar\u00e0 una funzione che restituir\u00e0 l&#8217;array <code>[1, 2, 3, 4, 6, 9]<\/code>.<\/li>\n<\/ol>\n<p>Il bello di queste due callback \u00e8 che vengono memoizzate nella cache e rimangono in giro fino a quando l&#8217;array di dipendenze non cambia. Questo significa che durante un rendering, non saranno garbage collected.<\/p>\n\n<h2>Rendering e React<\/h2>\n<p>Perch\u00e9 la memoizzazione \u00e8 importante quando si parla di React?<\/p>\n<p>La memoizzazione ha a che fare con il modo in cui React rende i vostri componenti. React utilizza un Virtual DOM archiviato in memoria per confrontare i dati e decidere cosa aggiornare.<\/p>\n<p>Il DOM virtuale aiuta React nelle prestazioni e mantiene veloce la vostra applicazione. Di default, se un qualsiasi valore cambia nel vostro componente, l&#8217;intero componente viene reso nuovamente. Questo rende React &#8220;reattivo&#8221; all&#8217;input dell&#8217;utente e permette di aggiornare lo schermo senza ricaricare la pagina.<\/p>\n<p>Non dovreste fare il rendering del vostro componente perch\u00e9 le modifiche non avranno effetto su quel componente. \u00c8 qui che diventa utile la memoizzazione attraverso <code>useCallback<\/code> e <code>useMemo<\/code>.<\/p>\n<p>Quando React ri-renderizza il vostro componente, ricrea anche le funzioni che avete dichiarato all&#8217;interno del vostro componente.<\/p>\n<p>Si noti che, quando si confronta l&#8217;uguaglianza di una funzione con un&#8217;altra funzione, sar\u00e0 sempre falsa. Dato che una funzione \u00e8 anche un oggetto, sar\u00e0 uguale solo a se stessa:<\/p>\n<pre><code class=\"language-javascript\">\/\/ queste variabili contengono la stessa identica funzione, ma non sono uguali\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>In altre parole, quando React ri-renderizza il componente, vedr\u00e0 tutte le funzioni dichiarate nel componente come nuove funzioni.<\/p>\n<p>Questo va bene nella maggior parte dei casi, le funzioni sono semplici da calcolare e non avranno un impatto sulle prestazioni. Ma le volte in cui non volete che la funzione sia vista come una nuova funzione, potete contare su <code>useCallback<\/code>.<\/p>\n<p>Potreste pensare: &#8220;Quando non voglio che una funzione sia vista come una nuova funzione? Beh, ci sono alcuni casi in cui <code>useCallback<\/code> ha pi\u00f9 senso:<\/p>\n<ol>\n<li>State passando la funzione ad un altro componente anche questo memoizzato (<code>useMemo<\/code>)<\/li>\n<li>La vostra funzione ha uno stato interno che deve ricordare<\/li>\n<li>La vostra funzione \u00e8 una dipendenza di un altro hook, come <code>useEffect<\/code><\/li>\n<\/ol>\n<h2>Benefici delle Prestazioni di React useCallback<\/h2>\n<p>Se <code>useCallback<\/code> \u00e8 usato in modo appropriato, pu\u00f2 aiutarvi a rendere pi\u00f9 veloce la vostra applicazione e ad evitare che i componenti vengano renderizzati nuovamente se non \u00e8 necessario.<\/p>\n<p>Supponiamo, ad esempio, che avete un componente che recupera una grande quantit\u00e0 di dati ed \u00e8 responsabile della visualizzazione di quei dati sotto forma di un <a href=\"https:\/\/kinsta.com\/blog\/wordpress-charts\/\">grafico o un diagramma<\/a>, come questo:<\/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:\/\/kinsta.com\/wp-content\/uploads\/2021\/12\/react-bar-graph.png\" alt=\"Un grafico a barre colorato che confronta il tempo di transazione complessivo di PHP, MySQL, Reddis ed esterno (altro) in millisecondi..\" width=\"1600\" height=\"546\"><figcaption id=\"caption-attachment-110702\" class=\"wp-caption-text\">Grafico a barre generato utilizzando un componente React.<\/figcaption><\/figure><\/figure>\n<p>Supponiamo che il componente genitore della vostra visualizzazione dei dati sia renderizzato nuovamente, ma le propriet\u00e0 o lo stato cambiati non abbiano effetto su quel componente. In questo caso, probabilmente non si dovrebbe o non si ha bisogno di fare un nuovo rendering e recuperare tutti i dati. Evitare questo re-render e refetch pu\u00f2 far risparmiare larghezza di banda al vostro utente e offrire una user experience pi\u00f9 fluida.<\/p>\n<h2>Svantaggi di React useCallback<\/h2>\n<p>Anche se questo hook pu\u00f2 aiutarvi a migliorare le prestazioni, presenta anche le sue insidie. Alcune cose da considerare prima di usare <code>useCallback<\/code> (e <code>useMemo<\/code>) sono:<\/p>\n<ul>\n<li><strong>Garbage collection:<\/strong> Le altre funzioni che non sono gi\u00e0 memoizzate saranno buttate via da React per liberare memoria.<\/li>\n<li><strong>Allocazione della memoria:<\/strong> Simile alla garbage collection, pi\u00f9 funzioni memoizzate avete, pi\u00f9 memoria sar\u00e0 richiesta. Inoltre, ogni volta che usate queste callback, c&#8217;\u00e8 un sacco di codice all&#8217;interno di React che ha bisogno di ancora pi\u00f9 memoria per fornirvi l&#8217;output della cache.<\/li>\n<li><strong>Complessit\u00e0 del codice:<\/strong> Quando iniziate ad avvolgere le funzioni in questi <a href=\"https:\/\/kinsta.com\/it\/blog\/hook-wordpress\/\">hook<\/a>, aumentate immediatamente la complessit\u00e0 del codice. Ora \u00e8 necessaria una maggiore comprensione del perch\u00e9 questi hook vengono utilizzati e la conferma che vengano utilizzati correttamente.<\/li>\n<\/ul>\n<p>Essere consapevoli delle insidie di cui sopra pu\u00f2 risparmiarvi dei grattacapi. Se state pensando di utilizzare <code>useCallback<\/code>, assicuratevi che i vantaggi in termini di prestazioni superino gli svantaggi.<\/p>\n<h2>Esempio di React useCallback<\/h2>\n<p>Qui sotto c&#8217;\u00e8 una semplice configurazione con un componente Button e un componente Counter. Il contatore ha due parti di stato e rende due componenti Button, ognuno dei quali aggiorner\u00e0 una parte separata dello stato del componente Counter.<\/p>\n<p>Il componente Button riceve due propriet\u00e0: <code>handleClick<\/code> e name. Ogni volta che il pulsante viene reso a video, viene <a href=\"https:\/\/kinsta.com\/it\/blog\/ispeziona-elemento\/#touring-the-inspect-element-panel\">registrato nella console<\/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>In questo esempio, ogni volta che fate clic su uno dei due pulsanti, vedrete questo nella console:<\/p>\n<pre><code class=\"language-javascript\">\/\/ counter rendered\n\n\/\/ button1 rendered\n\/\/ button2 rendered<\/code><\/pre>\n<p>Ora, se applichiamo <code>useCallback<\/code> alle nostre funzioni <code>handleClick<\/code> e racchiudiamo il nostro pulsante in <code>React.memo<\/code>, possiamo vedere cosa ci fornisce <code>useCallback<\/code>. <code>React.memo<\/code> \u00e8 simile a <code>useMemo<\/code> e permette di memoizzare 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>Ora, quando clicchiamo su uno dei pulsanti, vedremo solo il pulsante su cui abbiamo cliccato per accedere alla console:<\/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>Abbiamo applicato la memoizzazione al nostro componente button e i valori prop che gli vengono passati sono visti come uguali. Le due funzioni <code>handleClick<\/code> sono memorizzate nella cache e saranno viste come la stessa funzione da React fino a quando il valore di un elemento nell&#8217;array di dipendenze non cambia (ad esempio <code>countOne<\/code>, <code>countTwo<\/code>).<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>Per quanto <code>useCallback<\/code> e <code>useMemo<\/code> siano fantastici, ricordate che hanno casi d&#8217;uso specifici &#8211; non dovreste racchiudere ogni funzione con questi hook. Se la funzione \u00e8 computazionalmente complessa, una dipendenza da un altro hook o una prop passata ad un componente memoizzato sono buoni motivi per aggiungere <code>useCallback<\/code>.<\/p>\n<p>Ci auguriamo che questo articolo vi abbia aiutato a comprendere questa funzionalit\u00e0 avanzata di React e vi abbia aiutato a prendere maggiore confidenza con la programmazione funzionale!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Non \u00e8 un segreto che React.js \u00e8 diventato molto popolare negli ultimi anni. Ora \u00e8 la libreria JavaScript scelta da molti degli attori pi\u00f9 importanti di &#8230;<\/p>\n","protected":false},"author":239,"featured_media":54540,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[25648,25574,25846,25707,67],"topic":[25918,26212],"class_list":["post-54228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-javascript","tag-javascript-frameworks","tag-react","tag-react-js","tag-webdev","topic-framework-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>Come Utilizzare l&#039;Hook useCallback di React<\/title>\n<meta name=\"description\" content=\"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l&#039;hook useCallback.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Utilizzare l&#039;Hook useCallback di React\" \/>\n<meta property=\"og:description\" content=\"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l&#039;hook useCallback.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T07:05:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-22T14:44:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\" \/>\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=\"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l&#039;hook useCallback.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Sobieray\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\"},\"author\":{\"name\":\"Matthew Sobieray\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\"},\"headline\":\"Come Utilizzare l&#8217;Hook useCallback di React\",\"datePublished\":\"2022-05-10T07:05:28+00:00\",\"dateModified\":\"2023-02-22T14:44:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\"},\"wordCount\":1257,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\",\"keywords\":[\"JavaScript\",\"JavaScript Frameworks\",\"React\",\"React.js\",\"webdev\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\",\"name\":\"Come Utilizzare l'Hook useCallback di React\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\",\"datePublished\":\"2022-05-10T07:05:28+00:00\",\"dateModified\":\"2023-02-22T14:44:35+00:00\",\"description\":\"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l'hook useCallback.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Come Utilizzare l'Hook useCallback di React\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come Utilizzare l&#8217;Hook useCallback di React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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:\/\/kinsta.com\/it\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\",\"name\":\"Matthew Sobieray\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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:\/\/kinsta.com\/it\/blog\/author\/mattsobieray\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Utilizzare l'Hook useCallback di React","description":"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l'hook useCallback.","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:\/\/kinsta.com\/it\/blog\/usecallback-react\/","og_locale":"it_IT","og_type":"article","og_title":"Come Utilizzare l'Hook useCallback di React","og_description":"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l'hook useCallback.","og_url":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-05-10T07:05:28+00:00","article_modified_time":"2023-02-22T14:44:35+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","type":"image\/jpeg"}],"author":"Matthew Sobieray","twitter_card":"summary_large_image","twitter_description":"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l'hook useCallback.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Matthew Sobieray","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/"},"author":{"name":"Matthew Sobieray","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694"},"headline":"Come Utilizzare l&#8217;Hook useCallback di React","datePublished":"2022-05-10T07:05:28+00:00","dateModified":"2023-02-22T14:44:35+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/"},"wordCount":1257,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","keywords":["JavaScript","JavaScript Frameworks","React","React.js","webdev"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/","url":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/","name":"Come Utilizzare l'Hook useCallback di React","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","datePublished":"2022-05-10T07:05:28+00:00","dateModified":"2023-02-22T14:44:35+00:00","description":"Vuoi sapere come React gestisce la memoizzazione? Migliora le tue competenze in React ed evita il re-rendering con l'hook useCallback.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/usecallback-react\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/05\/usecallback-react.jpeg","width":1460,"height":730,"caption":"Come Utilizzare l'Hook useCallback di React"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/usecallback-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinsta.com\/it\/argomenti\/react\/"},{"@type":"ListItem","position":3,"name":"Come Utilizzare l&#8217;Hook useCallback di React"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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:\/\/kinsta.com\/it\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694","name":"Matthew Sobieray","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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:\/\/kinsta.com\/it\/blog\/author\/mattsobieray\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/54228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/239"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=54228"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/54228\/revisions"}],"predecessor-version":[{"id":54539,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/54228\/revisions\/54539"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/54228\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/54540"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=54228"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=54228"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=54228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}