{"id":56797,"date":"2022-05-10T08:05:09","date_gmt":"2022-05-10T07:05:09","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=56797&#038;preview=true&#038;preview_id=56797"},"modified":"2024-10-08T13:15:43","modified_gmt":"2024-10-08T12:15:43","slug":"utiliser-callback-react","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/","title":{"rendered":"Apprendre \u00e0 apprivoiser le hook Callback de React"},"content":{"rendered":"<p>Ce n&rsquo;est un secret pour personne que <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-developpement-web\/#27-reactjs\">React.js est devenu tr\u00e8s populaire<\/a> ces derni\u00e8res ann\u00e9es. C&rsquo;est maintenant la <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/#reactjs\">biblioth\u00e8que JavaScript de choix<\/a> pour de nombreux acteurs les plus en vue de l&rsquo;Internet, y compris Facebook et WhatsApp.<\/p>\n<p>L&rsquo;une des principales raisons de son essor est l&rsquo;introduction des hooks dans la <a href=\"https:\/\/github.com\/facebook\/react\/blob\/main\/CHANGELOG.md#1680-february-6-2019\" target=\"_blank\" rel=\"noopener noreferrer\">version 16.8<\/a>. Les hooks React vous permettent d&rsquo;exploiter les fonctionnalit\u00e9s de React sans avoir \u00e0 \u00e9crire des composants de classe. D\u00e9sormais, les composants fonctionnels avec des hooks sont devenus la structure de pr\u00e9dilection des d\u00e9veloppeurs pour travailler avec React.<\/p>\n<p>Dans cet article de blog, nous allons approfondir un hook sp\u00e9cifique &#8211; <code>useCallback<\/code> &#8211; car il touche \u00e0 une partie fondamentale de la programmation fonctionnelle connue sous le nom de m\u00e9morisation. Vous saurez exactement comment et quand utiliser le hook <code>useCallback<\/code> et tirer le meilleur parti de ses capacit\u00e9s d&rsquo;am\u00e9lioration des performances.<\/p>\n<p>Pr\u00eat ? C&rsquo;est parti !<\/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>Qu&rsquo;est-ce que la m\u00e9morisation ?<\/h2>\n<p>La m\u00e9morisation consiste \u00e0 ce qu&rsquo;une fonction complexe stocke sa sortie afin qu&rsquo;elle soit appel\u00e9e la prochaine fois avec la m\u00eame entr\u00e9e. C&rsquo;est <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-le-cache\/\">similaire \u00e0 la mise en cache<\/a>, mais \u00e0 un niveau plus local. Elle permet de sauter les calculs complexes et de renvoyer la sortie plus rapidement puisqu&rsquo;elle est d\u00e9j\u00e0 calcul\u00e9e.<\/p>\n<p>Cela peut avoir un effet significatif sur l&rsquo;allocation de m\u00e9moire et les performances, et cette contrainte est ce que le hook <code>useCallback<\/code> est cens\u00e9 all\u00e9ger.<\/p>\n<h3>React&rsquo;s useCallback vs useMemo<\/h3>\n<p>\u00c0 ce stade, il est utile de mentionner que <code>useCallback<\/code> se combine parfaitement avec un autre hook appel\u00e9 <code>useMemo<\/code>. Nous les aborderons tous les deux, mais dans cet article, nous allons nous concentrer sur <code>useCallback<\/code> comme sujet principal.<\/p>\n<p>La diff\u00e9rence essentielle est que <code>useMemo<\/code> renvoie une valeur m\u00e9moris\u00e9e, alors que <code>useCallback<\/code> renvoie une fonction m\u00e9moris\u00e9e. Cela signifie que <code>useMemo<\/code> est utilis\u00e9 pour stocker une valeur calcul\u00e9e, tandis que <code>useCallback<\/code> renvoie une fonction que vous pouvez appeler plus tard.<\/p>\n<p>Ces hooks vous renvoient une version en cache, sauf si l&rsquo;une de leurs d\u00e9pendances (par exemple, l&rsquo;\u00e9tat ou les props) change.<\/p>\n<p>Jetons un coup d&rsquo;oeil aux deux fonctions en action :<\/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>L&rsquo;extrait de code ci-dessus est un exemple artificiel mais montre la diff\u00e9rence entre les deux callbacks :<\/p>\n<ol>\n<li><code>memoizedValue<\/code> deviendra le tableau <code>[1, 2, 3, 4, 6, 9]<\/code>. Tant que la variable valeurs reste, il en sera de m\u00eame pour <code>memoizedValue<\/code>, et il ne sera jamais recalcul\u00e9.<\/li>\n<li><code>memoizedFunction<\/code> sera une fonction qui retournera le tableau <code>[1, 2, 3, 4, 6, 9]<\/code>.<\/li>\n<\/ol>\n<p>Ce qui est g\u00e9nial avec ces deux callbacks, c&rsquo;est qu&rsquo;ils sont mis en cache et restent en place jusqu&rsquo;\u00e0 ce que le tableau de d\u00e9pendances change. Cela signifie que lors d&rsquo;un rendu, ils ne seront pas collect\u00e9s.<\/p>\n\n<h2>Rendu et React<\/h2>\n<p>Pourquoi la m\u00e9morisation est-elle importante lorsqu&rsquo;il s&rsquo;agit de React ?<\/p>\n<p>Cela a \u00e0 voir avec la fa\u00e7on dont React rend vos composants. React utilise un DOM virtuel stock\u00e9 en m\u00e9moire pour comparer les donn\u00e9es et d\u00e9cider de ce qu&rsquo;il faut mettre \u00e0 jour.<\/p>\n<p>Le DOM virtuel aide React avec la performance et garde votre application rapide. Par d\u00e9faut, si une valeur de votre composant change, le composant entier sera rendu \u00e0 nouveau. Cela rend React \u00ab r\u00e9actif \u00bb aux entr\u00e9es de l&rsquo;utilisateur et permet de mettre \u00e0 jour l&rsquo;\u00e9cran sans recharger la page.<\/p>\n<p>Vous ne voulez pas rendre votre composant parce que les changements n&rsquo;affecteront pas ce composant. C&rsquo;est l\u00e0 que la m\u00e9morisation par le biais de <code>useCallback<\/code> et <code>useMemo<\/code> s&rsquo;av\u00e8re utile.<\/p>\n<p>Lorsque React effectue un nouveau rendu de votre composant, il recr\u00e9e \u00e9galement les fonctions que vous avez d\u00e9clar\u00e9es \u00e0 l&rsquo;int\u00e9rieur de votre composant.<\/p>\n<p>Notez que lorsque vous comparez l&rsquo;\u00e9galit\u00e9 d&rsquo;une fonction \u00e0 une autre fonction, elle sera toujours fausse. Parce qu&rsquo;une fonction est \u00e9galement un objet, elle ne sera \u00e9gale qu&rsquo;\u00e0 elle-m\u00eame :<\/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 d&rsquo;autres termes, lorsque React rendra \u00e0 nouveau votre composant, il verra toutes les fonctions d\u00e9clar\u00e9es dans votre composant comme \u00e9tant de nouvelles fonctions.<\/p>\n<p>Ceci est tr\u00e8s bien la plupart du temps, et les fonctions simples sont faciles \u00e0 calculer et n&rsquo;auront pas d&rsquo;impact sur les performances. Mais les autres fois, lorsque vous ne voulez pas que la fonction soit vue comme une nouvelle fonction, vous pouvez compter sur <code>useCallback<\/code> pour vous aider.<\/p>\n<p>Vous pensez peut-\u00eatre : \u00ab Quand est-ce que je ne voudrais pas qu&rsquo;une fonction soit vue comme une nouvelle fonction ? \u00bb Eh bien, il y a certains cas o\u00f9 <code>useCallback<\/code> est plus logique :<\/p>\n<ol>\n<li>Vous passez la fonction \u00e0 un autre composant qui est \u00e9galement m\u00e9moris\u00e9 (<code>useMemo<\/code>)<\/li>\n<li>Votre fonction a un \u00e9tat interne qu&rsquo;elle doit m\u00e9moriser<\/li>\n<li>Votre fonction est une d\u00e9pendance d&rsquo;un autre hook, comme <code>useEffect<\/code> par exemple<\/li>\n<\/ol>\n<h2>Avantages en termes de performances de React useCallback<\/h2>\n<p>Lorsque <code>useCallback<\/code> est utilis\u00e9 de mani\u00e8re appropri\u00e9e, il peut contribuer \u00e0 acc\u00e9l\u00e9rer votre application et \u00e0 emp\u00eacher les composants d&rsquo;effectuer un nouveau rendu s&rsquo;ils n&rsquo;en ont pas besoin.<\/p>\n<p>Disons, par exemple, que vous avez un composant qui r\u00e9cup\u00e8re une grande quantit\u00e9 de donn\u00e9es et qui est responsable de l&rsquo;affichage de ces donn\u00e9es sous la forme d&rsquo;un <a href=\"https:\/\/kinsta.com\/fr\/blog\/diagrammes-wordpress\/\">tableau ou d&rsquo;un graphique<\/a>, comme ceci :<\/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=\"Graphique \u00e0 barres g\u00e9n\u00e9r\u00e9 \u00e0 l'aide d'un composant React.\" width=\"1600\" height=\"546\"><figcaption id=\"caption-attachment-110702\" class=\"wp-caption-text\">Graphique \u00e0 barres g\u00e9n\u00e9r\u00e9 \u00e0 l&rsquo;aide d&rsquo;un composant React.<\/figcaption><\/figure><\/figure>\n<p>Supposons que le composant parent de la composante de votre visualisation de donn\u00e9es se reforme, mais que les props ou l&rsquo;\u00e9tat modifi\u00e9s n&rsquo;affectent pas cette composante. Dans ce cas, vous n&rsquo;avez probablement pas envie ou besoin de le rendre \u00e0 nouveau et de r\u00e9cup\u00e9rer toutes les donn\u00e9es. En \u00e9vitant ce nouveau rendu et cette nouvelle r\u00e9cup\u00e9ration, vous pouvez \u00e9conomiser la bande passante de votre utilisateur et lui offrir une exp\u00e9rience plus fluide.<\/p>\n<h2>Inconv\u00e9nients de React useCallback<\/h2>\n<p>Bien que ce hook puisse vous aider \u00e0 am\u00e9liorer les performances, il comporte \u00e9galement des \u00e9cueils. Voici quelques \u00e9l\u00e9ments \u00e0 prendre en compte avant d&rsquo;utiliser <code>useCallback<\/code> (et <code>useMemo<\/code>) :<\/p>\n<ul>\n<li><strong>Garbage Collection :<\/strong> Les autres fonctions qui ne sont pas d\u00e9j\u00e0 m\u00e9moris\u00e9es seront jet\u00e9es par React pour lib\u00e9rer de la m\u00e9moire.<\/li>\n<li><strong>Allocation de m\u00e9moire :<\/strong> Comme pour le Garbage Collection, plus vous avez de fonctions m\u00e9moris\u00e9es, plus vous aurez besoin de m\u00e9moire. De plus, chaque fois que vous utilisez ces rappels, il y a un tas de code dans React qui doit utiliser encore plus de m\u00e9moire pour vous fournir la sortie en cache.<\/li>\n<li><strong>Complexit\u00e9 du code :<\/strong> Lorsque vous commencez \u00e0 envelopper des fonctions dans ces <a href=\"https:\/\/kinsta.com\/fr\/blog\/hooks-wordpress\/\">hooks<\/a>, vous augmentez imm\u00e9diatement la complexit\u00e9 de votre code. Il faut maintenant mieux comprendre pourquoi ces hooks sont utilis\u00e9s et confirmer qu&rsquo;ils sont utilis\u00e9s correctement.<\/li>\n<\/ul>\n<p>Si vous \u00eates conscient des pi\u00e8ges mentionn\u00e9s ci-dessus, cela vous \u00e9vitera de tomber dessus par hasard. Si vous envisagez d&rsquo;utiliser <code>useCallback<\/code>, assurez-vous que les avantages en termes de performances l&#8217;emportent sur les inconv\u00e9nients.<\/p>\n<h2>Exemple de React useCallback<\/h2>\n<p>Voici une configuration simple avec un composant Button et un composant Counter. Le compteur poss\u00e8de deux \u00e9l\u00e9ments d&rsquo;\u00e9tat et rend deux composants bouton, chacun mettant \u00e0 jour une partie distincte de l&rsquo;\u00e9tat du composant de compteur.<\/p>\n<p>Le composant Button re\u00e7oit deux props : <code>handleClick<\/code> et name. Chaque fois que le bouton est rendu, il <a href=\"https:\/\/kinsta.com\/fr\/blog\/inspecter-elements\/#touring-the-inspect-element-panel\">envoie un journal \u00e0 la 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>Dans cet exemple, chaque fois que vous cliquez sur l&rsquo;un des boutons, vous verrez ceci dans la console :<\/p>\n<pre><code class=\"language-javascript\">\/\/ counter rendered\n\n\/\/ button1 rendered\n\/\/ button2 rendered<\/code><\/pre>\n<p>Maintenant, si nous appliquons <code>useCallback<\/code> \u00e0 nos fonctions <code>handleClick<\/code> et enveloppons notre bouton dans <code>React.memo<\/code>, nous pouvons voir ce que <code>useCallback<\/code> nous apporte. <code>React.memo<\/code> est similaire \u00e0 <code>useMemo<\/code> et nous permet de m\u00e9moriser un composant.<\/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>Maintenant, lorsque nous cliquons sur l&rsquo;un ou l&rsquo;autre des boutons, nous ne verrons que le bouton sur lequel nous avons cliqu\u00e9 pour nous connecter \u00e0 la 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>Nous avons appliqu\u00e9 la m\u00e9morisation \u00e0 notre composant bouton, et les valeurs prop qui lui sont pass\u00e9es sont vues comme \u00e9gales. Les deux fonctions <code>handleClick<\/code> sont mises en cache et seront consid\u00e9r\u00e9es comme la m\u00eame fonction par React jusqu&rsquo;\u00e0 ce que la valeur d&rsquo;un \u00e9l\u00e9ment du tableau de d\u00e9pendances change (par exemple, <code>countOne<\/code>, <code>countTwo<\/code>).<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Aussi cool que soient <code>useCallback<\/code> et <code>useMemo<\/code>, rappelez-vous qu&rsquo;ils ont des cas d&rsquo;utilisation sp\u00e9cifiques &#8211; vous ne devriez pas envelopper chaque fonction avec ces hooks. Si la fonction est complexe du point de vue du calcul, une d\u00e9pendance d&rsquo;un autre hook ou une prop pass\u00e9e \u00e0 un composant m\u00e9moris\u00e9 sont de bons indicateurs que vous pourriez vouloir atteindre <code>useCallback<\/code>.<\/p>\n<p>Nous esp\u00e9rons que cet article vous a aid\u00e9 \u00e0 comprendre cette fonctionnalit\u00e9 avanc\u00e9e de React et vous a permis de gagner en confiance avec la programmation fonctionnelle en cours de route !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ce n&rsquo;est un secret pour personne que React.js est devenu tr\u00e8s populaire ces derni\u00e8res ann\u00e9es. C&rsquo;est maintenant la biblioth\u00e8que JavaScript de choix pour de nombreux acteurs &#8230;<\/p>\n","protected":false},"author":239,"featured_media":56851,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[535,468,714,581,47],"topic":[979,1004],"class_list":["post-56797","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-javascript","tag-javascript-frameworks","tag-react","tag-react-js","tag-webdev","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>Apprenez \u00e0 apprivoiser le hook Callback de React<\/title>\n<meta name=\"description\" content=\"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.\" \/>\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\/fr\/blog\/utiliser-callback-react\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apprendre \u00e0 apprivoiser le hook Callback de React\" \/>\n<meta property=\"og:description\" content=\"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T07:05:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-08T12:15:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Sobieray\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\"},\"author\":{\"name\":\"Matthew Sobieray\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\"},\"headline\":\"Apprendre \u00e0 apprivoiser le hook Callback de React\",\"datePublished\":\"2022-05-10T07:05:09+00:00\",\"dateModified\":\"2024-10-08T12:15:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\"},\"wordCount\":1546,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg\",\"keywords\":[\"JavaScript\",\"JavaScript Frameworks\",\"React\",\"React.js\",\"webdev\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\",\"name\":\"Apprenez \u00e0 apprivoiser le hook Callback de React\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg\",\"datePublished\":\"2022-05-10T07:05:09+00:00\",\"dateModified\":\"2024-10-08T12:15:43+00:00\",\"description\":\"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Apprenez \u00e0 apprivoiser le hook useCallback de React.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/react\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Apprendre \u00e0 apprivoiser le hook Callback de React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694\",\"name\":\"Matthew Sobieray\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/mattsobieray\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apprenez \u00e0 apprivoiser le hook Callback de React","description":"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.","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\/fr\/blog\/utiliser-callback-react\/","og_locale":"fr_FR","og_type":"article","og_title":"Apprendre \u00e0 apprivoiser le hook Callback de React","og_description":"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.","og_url":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-05-10T07:05:09+00:00","article_modified_time":"2024-10-08T12:15:43+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","type":"image\/jpeg"}],"author":"Matthew Sobieray","twitter_card":"summary_large_image","twitter_description":"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Matthew Sobieray","Dur\u00e9e de lecture estim\u00e9e":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/"},"author":{"name":"Matthew Sobieray","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694"},"headline":"Apprendre \u00e0 apprivoiser le hook Callback de React","datePublished":"2022-05-10T07:05:09+00:00","dateModified":"2024-10-08T12:15:43+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/"},"wordCount":1546,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","keywords":["JavaScript","JavaScript Frameworks","React","React.js","webdev"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/","url":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/","name":"Apprenez \u00e0 apprivoiser le hook Callback de React","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","datePublished":"2022-05-10T07:05:09+00:00","dateModified":"2024-10-08T12:15:43+00:00","description":"Vous vous demandez comment React g\u00e8re la m\u00e9morisation ? Am\u00e9liorez vos connaissances de React en apprenant comment exploiter le hook Callback pour \u00e9viter un nouveau rendu.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/05\/usecallback-react.jpeg","width":1460,"height":730,"caption":"Apprenez \u00e0 apprivoiser le hook useCallback de React."},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/utiliser-callback-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"React","item":"https:\/\/kinsta.com\/fr\/sujets\/react\/"},{"@type":"ListItem","position":3,"name":"Apprendre \u00e0 apprivoiser le hook Callback de React"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/57ce045b15378b47c67292ce76cc3694","name":"Matthew Sobieray","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/mattsobieray\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/56797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/239"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=56797"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/56797\/revisions"}],"predecessor-version":[{"id":56908,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/56797\/revisions\/56908"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/56797\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/56851"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=56797"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=56797"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=56797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}