{"id":50042,"date":"2022-05-10T08:04:30","date_gmt":"2022-05-10T07:04:30","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=50042&#038;preview=true&#038;preview_id=50042"},"modified":"2023-08-28T10:52:56","modified_gmt":"2023-08-28T09:52:56","slug":"usecallback-react","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/","title":{"rendered":"Den useCallback-Hook von React z\u00e4hmen lernen"},"content":{"rendered":"<p>Es ist kein Geheimnis, dass <a href=\"https:\/\/kinsta.com\/de\/blog\/webentwicklung-tools\/#27-reactjs\">React.js in den letzten Jahren sehr popul\u00e4r geworden<\/a> ist. Es ist jetzt die <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-bibliotheken\/#reactjs\">JavaScript-Bibliothek der Wahl<\/a> f\u00fcr viele der bekanntesten Akteure im Internet, darunter Facebook und WhatsApp.<\/p>\n<p>Einer der Hauptgr\u00fcnde f\u00fcr ihren Aufstieg war die Einf\u00fchrung von Hooks in <a href=\"https:\/\/github.com\/facebook\/react\/blob\/main\/CHANGELOG.md#1680-february-6-2019\" target=\"_blank\" rel=\"noopener noreferrer\">Version 16.8<\/a>. Mit React Hooks kannst du die Funktionalit\u00e4t von React nutzen, ohne Klassenkomponenten zu schreiben. Jetzt sind funktionale Komponenten mit Hooks die bevorzugte Struktur f\u00fcr Entwickler, die mit React arbeiten.<\/p>\n<p>In diesem Blogbeitrag werden wir einen bestimmten Hook &#8211; <code>useCallback<\/code> &#8211; genauer unter die Lupe nehmen, denn er ber\u00fchrt einen grundlegenden Teil der funktionalen Programmierung, die so genannte Memoisierung. Du wirst genau erfahren, wie und wann du den <code>useCallback<\/code> Hook nutzen kannst, um das Beste aus seinen leistungssteigernden F\u00e4higkeiten zu machen.<\/p>\n<p>Bist du bereit? Dann lass uns loslegen!<\/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>Was ist Memoisierung?<\/h2>\n<p>Memoisierung bedeutet, dass eine komplexe Funktion ihre Ausgabe speichert, damit sie beim n\u00e4chsten Aufruf mit derselben Eingabe wieder zur Verf\u00fcgung steht. Es ist <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-cache\/\">\u00e4hnlich wie das Caching<\/a>, aber auf einer lokaleren Ebene. So k\u00f6nnen komplexe Berechnungen \u00fcbersprungen werden und die Ausgabe wird schneller zur\u00fcckgegeben, da sie bereits berechnet wurde.<\/p>\n<p>Das kann sich erheblich auf die Speicherzuweisung und die Leistung auswirken, und genau diese Belastung soll der <code>useCallback<\/code> Hook lindern.<\/p>\n<h3>Reacts useCallback vs. useMemo<\/h3>\n<p>An dieser Stelle ist es erw\u00e4hnenswert, dass <code>useCallback<\/code> gut mit einem anderen Hook namens <code>useMemo<\/code> zusammenarbeitet. Wir werden beide er\u00f6rtern, aber in diesem Beitrag konzentrieren wir uns auf <code>useCallback<\/code> als Hauptthema.<\/p>\n<p>Der wichtigste Unterschied ist, dass <code>useMemo<\/code> einen memoisierten Wert zur\u00fcckgibt, w\u00e4hrend <code>useCallback<\/code> eine memoisierte Funktion zur\u00fcckgibt. Das bedeutet, dass <code>useMemo<\/code> zum Speichern eines berechneten Wertes verwendet wird, w\u00e4hrend <code>useCallback<\/code> eine Funktion zur\u00fcckgibt, die du sp\u00e4ter aufrufen kannst.<\/p>\n<p>Diese Hooks geben eine zwischengespeicherte Version zur\u00fcck, es sei denn, eine ihrer Abh\u00e4ngigkeiten (z. B. State oder Props) \u00e4ndert sich.<\/p>\n<p>Schauen wir uns die beiden Funktionen einmal in Aktion an:<\/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>Der obige Codeschnipsel ist ein erfundenes Beispiel, zeigt aber den Unterschied zwischen den beiden R\u00fcckrufen:<\/p>\n<ol>\n<li><code>memoizedValue<\/code> wird zu dem Array <code>[1, 2, 3, 4, 6, 9]<\/code>. Solange die Wertevariable bestehen bleibt, bleibt auch <code>memoizedValue<\/code> bestehen und wird nie wieder neu berechnet.<\/li>\n<li><code>memoizedFunction<\/code> wird eine Funktion sein, die das Array <code>[1, 2, 3, 4, 6, 9]<\/code> zur\u00fcckgibt.<\/li>\n<\/ol>\n<p>Das Tolle an diesen beiden Callbacks ist, dass sie zwischengespeichert werden und so lange bleiben, bis sich das Abh\u00e4ngigkeitsarray \u00e4ndert. Das bedeutet, dass sie bei einem Rendering nicht in den M\u00fcll geworfen werden.<\/p>\n\n<h2>Rendering und React<\/h2>\n<p>Warum ist die Memoisierung bei React so wichtig?<\/p>\n<p>Es hat damit zu tun, wie React deine Komponenten rendert. React nutzt ein virtuelles DOM, das im Speicher gespeichert ist, um Daten zu vergleichen und zu entscheiden, was aktualisiert werden soll.<\/p>\n<p>Das virtuelle DOM unterst\u00fctzt React bei der Leistung und h\u00e4lt deine Anwendung schnell. Wenn sich ein Wert in deiner Komponente \u00e4ndert, wird normalerweise die gesamte Komponente neu gerendert. Dass macht\u00a0 React &#8222;reactive&#8220; auf Benutzereingaben und l\u00e4sst den Bildschirm aktualisieren, ohne die Seite neu zu laden.<\/p>\n<p>Du willst deine Komponente nicht neu rendern, weil sich \u00c4nderungen nicht auf die Komponente auswirken werden. Hier erweist sich die Memoisierung durch <code>useCallback<\/code> und <code>useMemo<\/code> als n\u00fctzlich<\/p>\n<p>Wenn React deine Komponente neu rendert, werden auch die Funktionen, die du in deiner Komponente deklariert hast, neu erstellt.<\/p>\n<p>Beachte, dass der Vergleich der Gleichheit einer Funktion mit einer anderen Funktion immer falsch sein wird. Da eine Funktion auch ein Objekt ist, kann sie nur sich selbst gleich sein:<\/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>Mit anderen Worten: Wenn React deine Komponente neu rendert, werden alle Funktionen, die in deiner Komponente deklariert sind, als neue Funktionen angesehen.<\/p>\n<p>Das ist in den meisten F\u00e4llen in Ordnung, denn einfache Funktionen sind leicht zu berechnen und beeintr\u00e4chtigen die Leistung nicht. Aber wenn du nicht m\u00f6chtest, dass die Funktion als neue Funktion angesehen wird, kannst du auf <code>useCallback<\/code> zur\u00fcckgreifen.<\/p>\n<p>Du fragst dich vielleicht: &#8222;Wann sollte ich nicht wollen, dass eine Funktion als neue Funktion erkannt wird?&#8220; Nun, es gibt bestimmte F\u00e4lle, in denen <code>useCallback<\/code> sinnvoller ist:<\/p>\n<ol>\n<li>Du \u00fcbergibst die Funktion an eine andere Komponente, die ebenfalls memoisiert ist (<code>useMemo<\/code>)<\/li>\n<li>Deine Funktion hat einen internen Status, den sie sich merken muss<\/li>\n<li>Deine Funktion ist von einem anderen Hook abh\u00e4ngig, wie zum Beispiel <code>useEffect<\/code><\/li>\n<\/ol>\n<h2>Leistungsvorteile von React useCallback<\/h2>\n<p>Wenn <code>useCallback<\/code> richtig eingesetzt wird, kann es dazu beitragen, deine Anwendung zu beschleunigen und zu verhindern, dass Komponenten neu gerendert werden, wenn sie es nicht m\u00fcssen.<\/p>\n<p>Nehmen wir an, du hast eine Komponente, die eine gro\u00dfe Menge an Daten abruft und daf\u00fcr verantwortlich ist, diese Daten in Form eines <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-diagramme\/\">Diagramms oder einer Grafik<\/a> darzustellen, etwa so:<\/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=\"wp-image-110702 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/12\/react-bar-graph.png\" alt=\"Ein buntes Balkendiagramm, das die gesamte Transaktionszeit von PHP, MySQL, Reddis und externen (anderen) Systemen in Millisekunden vergleicht.\" width=\"1600\" height=\"546\"><figcaption id=\"caption-attachment-110702\" class=\"wp-caption-text\">Balkendiagramm, das mit einer React-Komponente erstellt wurde.<\/figcaption><\/figure><\/figure>\n<p>Angenommen, die \u00fcbergeordnete Komponente f\u00fcr die Komponente deiner Datenvisualisierung wird neu erstellt, aber die ge\u00e4nderten props oder der state wirken sich nicht auf diese Komponente aus. In diesem Fall willst oder musst du die Komponente wahrscheinlich nicht neu rendern und alle Daten neu abrufen. Wenn du dieses erneute Rendern und Abrufen vermeidest, sparst du die Bandbreite deines Nutzers und sorgst f\u00fcr ein reibungsloseres Nutzererlebnis.<\/p>\n<h2>Nachteile von React useCallback<\/h2>\n<p>Obwohl dieser Hook die Leistung verbessern kann, hat er auch seine T\u00fccken. Einige Dinge, die du vor der Verwendung von <code>useCallback<\/code> (und <code>useMemo<\/code>) beachten solltest, sind:<\/p>\n<ul>\n<li><strong>M\u00fcllabfuhr:<\/strong> Die anderen Funktionen, die nicht bereits memoisiert sind, werden von React weggeworfen, um Speicher freizugeben.<\/li>\n<li><strong>Speicherzuweisung:<\/strong> \u00c4hnlich wie bei der M\u00fcllabfuhr gilt: Je mehr memoisierte Funktionen du hast, desto mehr Speicher wird ben\u00f6tigt. Au\u00dferdem gibt es jedes Mal, wenn du diese R\u00fcckrufe verwendest, einen Haufen Code in React, der noch mehr Speicher ben\u00f6tigt, um dir die zwischengespeicherte Ausgabe zu liefern.<\/li>\n<li><strong>Komplexit\u00e4t des Codes:<\/strong> Wenn du anf\u00e4ngst, Funktionen in diese <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-hooks\/\">Hooks<\/a> zu verpacken, erh\u00f6ht sich sofort die Komplexit\u00e4t deines Codes. Du musst nun besser verstehen, warum diese Hooks verwendet werden und sicherstellen, dass sie richtig eingesetzt werden.<\/li>\n<\/ul>\n<p>Wenn du dir der oben genannten Fallstricke bewusst bist, kannst du dir die Kopfschmerzen ersparen, wenn du selbst \u00fcber sie stolperst. Wenn du den Einsatz von <code>useCallback<\/code> in Betracht ziehst, solltest du sicher sein, dass die Leistungsvorteile die Nachteile \u00fcberwiegen.<\/p>\n<h2>React useCallback Beispiel<\/h2>\n<p>Unten siehst du ein einfaches Setup mit einer Button-Komponente und einer Counter-Komponente. Der Z\u00e4hler hat zwei Zust\u00e4nde und gibt zwei Button-Komponenten aus, die jeweils einen separaten Teil des Zustands der Z\u00e4hler-Komponente aktualisieren.<\/p>\n<p>Die Button-Komponente nimmt zwei Requisiten auf: <code>handleClick<\/code> und name. Jedes Mal, wenn der Button gerendert wird, wird er <a href=\"https:\/\/kinsta.com\/de\/blog\/element-untersuchen\/#touring-the-inspect-element-panel\">in die Konsole geschrieben<\/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>Wenn du in diesem Beispiel auf eine der beiden Schaltfl\u00e4chen klickst, siehst du dies in der Konsole:<\/p>\n<pre><code class=\"language-javascript\">\/\/ counter rendered\n\n\/\/ button1 rendered\n\/\/ button2 rendered<\/code><\/pre>\n<p>Wenn wir nun <code>useCallback<\/code> auf unsere <code>handleClick<\/code> Funktionen anwenden und unseren Button in <code>React.memo<\/code> umh\u00fcllen, k\u00f6nnen wir sehen, was <code>useCallback<\/code> uns bietet. <code>React.memo<\/code> ist \u00e4hnlich wie <code>useMemo<\/code> und erm\u00f6glicht es uns, eine Komponente zu memoisieren.<\/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>Wenn wir jetzt auf eine der Schaltfl\u00e4chen klicken, sehen wir nur die Schaltfl\u00e4che, die wir angeklickt haben, um uns in der Konsole anzumelden:<\/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>Wir haben die Memoisierung auf unsere Schaltfl\u00e4chenkomponente angewendet, und die Prop-Werte, die ihr \u00fcbergeben werden, werden als gleich angesehen. Die beiden <code>handleClick<\/code> Funktionen werden zwischengespeichert und von React als dieselbe Funktion angesehen, bis sich der Wert eines Elements im Abh\u00e4ngigkeitsarray \u00e4ndert (z. B. <code>countOne<\/code>, <code>countTwo<\/code>).<\/p>\n\n<h2>Zusammenfassung<\/h2>\n<p>So cool <code>useCallback<\/code> und <code>useMemo<\/code> auch sind, denk daran, dass sie bestimmte Anwendungsf\u00e4lle haben &#8211; du solltest nicht jede Funktion mit diesen Hooks umh\u00fcllen. Wenn die Funktion rechenintensiv ist, ist eine Abh\u00e4ngigkeit von einem anderen Hook oder ein Prop, der an eine memoisierte Komponente \u00fcbergeben wird, ein guter Indikator daf\u00fcr, dass du vielleicht <code>useCallback<\/code> nutzen solltest.<\/p>\n<p>Wir hoffen, dass dieser Artikel dir geholfen hat, diese fortgeschrittene React-Funktionalit\u00e4t zu verstehen, und dass du dabei mehr Vertrauen in die funktionale Programmierung gewinnen konntest!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es ist kein Geheimnis, dass React.js in den letzten Jahren sehr popul\u00e4r geworden ist. Es ist jetzt die JavaScript-Bibliothek der Wahl f\u00fcr viele der bekanntesten Akteure &#8230;<\/p>\n","protected":false},"author":239,"featured_media":50294,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[465,445,692,555,28],"topic":[951,975],"class_list":["post-50042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-javascript","tag-javascript-frameworks","tag-react","tag-react-js","tag-webdev","topic-javascript-frameworks","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>Den useCallback-Hook von React z\u00e4hmen lernen<\/title>\n<meta name=\"description\" content=\"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.\" \/>\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\/de\/blog\/usecallback-react\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Den useCallback-Hook von React z\u00e4hmen lernen\" \/>\n<meta property=\"og:description\" content=\"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T07:04:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-28T09:52:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/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=\"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Sobieray\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\"},\"author\":{\"name\":\"Matthew Sobieray\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\"},\"headline\":\"Den useCallback-Hook von React z\u00e4hmen lernen\",\"datePublished\":\"2022-05-10T07:04:30+00:00\",\"dateModified\":\"2023-08-28T09:52:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\"},\"wordCount\":1344,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg\",\"keywords\":[\"JavaScript\",\"JavaScript Frameworks\",\"React\",\"React.js\",\"webdev\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\",\"name\":\"Den useCallback-Hook von React z\u00e4hmen lernen\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg\",\"datePublished\":\"2022-05-10T07:04:30+00:00\",\"dateModified\":\"2023-08-28T09:52:56+00:00\",\"description\":\"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Den useCallback-Hook von React z\u00e4hmen lernen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Den useCallback-Hook von React z\u00e4hmen lernen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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\/de\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\",\"name\":\"Matthew Sobieray\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/mattsobieray\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Den useCallback-Hook von React z\u00e4hmen lernen","description":"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.","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\/de\/blog\/usecallback-react\/","og_locale":"de_DE","og_type":"article","og_title":"Den useCallback-Hook von React z\u00e4hmen lernen","og_description":"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.","og_url":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2022-05-10T07:04:30+00:00","article_modified_time":"2023-08-28T09:52:56+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","type":"image\/jpeg"}],"author":"Matthew Sobieray","twitter_card":"summary_large_image","twitter_description":"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Matthew Sobieray","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/"},"author":{"name":"Matthew Sobieray","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694"},"headline":"Den useCallback-Hook von React z\u00e4hmen lernen","datePublished":"2022-05-10T07:04:30+00:00","dateModified":"2023-08-28T09:52:56+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/"},"wordCount":1344,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","keywords":["JavaScript","JavaScript Frameworks","React","React.js","webdev"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/","url":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/","name":"Den useCallback-Hook von React z\u00e4hmen lernen","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","datePublished":"2022-05-10T07:04:30+00:00","dateModified":"2023-08-28T09:52:56+00:00","description":"Du fragst dich, wie React die Memoisierung handhabt? Verbessere deine React-Kenntnisse, indem du lernst, wie du den useCallback-Hook nutzen kannst, um ein erneutes Rendern zu verhindern.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/usecallback-react\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/05\/usecallback-react.jpeg","width":1460,"height":730,"caption":"Den useCallback-Hook von React z\u00e4hmen lernen"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/usecallback-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinsta.com\/de\/thema\/react\/"},{"@type":"ListItem","position":3,"name":"Den useCallback-Hook von React z\u00e4hmen lernen"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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\/de\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694","name":"Matthew Sobieray","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/mattsobieray\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/50042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/239"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=50042"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/50042\/revisions"}],"predecessor-version":[{"id":50296,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/50042\/revisions\/50296"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/50042\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/50294"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=50042"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=50042"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=50042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}