{"id":3540,"date":"2021-07-24T08:53:39","date_gmt":"2021-07-24T08:53:39","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"},"modified":"2026-04-24T11:30:22","modified_gmt":"2026-04-24T11:30:22","slug":"reagir-aux-cles-oui-vous-en-avez-besoin-mais-pourquoi-exactement","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fr\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","title":{"rendered":"Cl\u00e9s React, oui ! Vous en avez besoin, mais pourquoi exactement ?"},"content":{"rendered":"<p>Il y a encore une chose dont vous devez vous souvenir, et c'est la <strong><a href=\"https:\/\/thecodest.co\/fr\/blog\/conditional-component-visibility-in-react\/\">React<\/a> Cl\u00e9<\/strong> chaque \u00e9l\u00e9ment de la liste rendue doit l'avoir. Ce concept est l'une des premi\u00e8res choses que tout front-end <a href=\"https:\/\/thecodest.co\/fr\/blog\/hire-vue-js-developers\/\">d\u00e9veloppeur<\/a> s'informe sur <strong>React<\/strong> au d\u00e9but de leur parcours. Nous allons maintenant nous pencher un peu plus sur les raisons de cette situation et sur les moments o\u00f9 il est possible de prendre des raccourcis.<\/p>\n<h2>Pourquoi avons-nous besoin de cet attribut cl\u00e9 ?<\/h2>\n<p>La r\u00e9ponse la plus simple serait \"d'optimiser les re-renders\", mais la r\u00e9ponse la plus compl\u00e8te doit au moins mentionner le concept de <strong>React Rapprochement<\/strong>. Il s'agit de d\u00e9terminer comment mettre \u00e0 jour l'interface utilisateur de la mani\u00e8re la plus efficace possible. Pour y parvenir rapidement, <strong>React<\/strong> doit d\u00e9cider quelles parties de l'arbre des \u00e9l\u00e9ments doivent \u00eatre mises \u00e0 jour et lesquelles ne doivent pas l'\u00eatre. Le probl\u00e8me est qu'il peut y avoir beaucoup d'\u00e9l\u00e9ments dans le DOM et que comparer chacun d'entre eux pour d\u00e9cider lequel doit \u00eatre mis \u00e0 jour est assez co\u00fbteux. Pour optimiser ce processus, <strong>React<\/strong> met en \u0153uvre l'algorithme diffing qui repose sur deux hypoth\u00e8ses :<\/p>\n<ol>\n<li>Deux types d'\u00e9l\u00e9ments diff\u00e9rents ne seront jamais identiques.<\/li>\n<li>Les d\u00e9veloppeurs peuvent contribuer manuellement \u00e0 l'optimisation de ce processus par le biais d'attributs cl\u00e9s, de sorte que les \u00e9l\u00e9ments, m\u00eame si leur ordre a chang\u00e9, peuvent \u00eatre localis\u00e9s et compar\u00e9s plus rapidement.<\/li>\n<\/ol>\n<p>Sur cette base, nous pouvons conclure que chaque <strong>Cl\u00e9 React<\/strong> doivent \u00e9galement \u00eatre uniques (dans la liste des \u00e9l\u00e9ments, pas globalement) et stables (ils ne doivent pas changer). Mais que se passe-t-il lorsqu'ils ne le sont pas ?<\/p>\n<h2>Unicit\u00e9, stabilit\u00e9 et indice de tableau<\/h2>\n<p>Comme nous l'avons d\u00e9j\u00e0 mentionn\u00e9, <strong>Cl\u00e9s React<\/strong> doit \u00eatre stable et unique. Le moyen le plus simple d'y parvenir est d'utiliser un identifiant unique (provenant par exemple d'une base de donn\u00e9es) et de le transmettre \u00e0 chaque \u00e9l\u00e9ment lors du mappage d'un tableau, ce qui est facile. Mais qu'en est-il des situations o\u00f9 nous n'avons pas d'ID, de nom ou d'autres identifiants uniques \u00e0 passer \u00e0 chaque \u00e9l\u00e9ment ? Eh bien, si nous ne passons rien comme cl\u00e9, <strong>React<\/strong> prendra par d\u00e9faut l'index du tableau courant (puisqu'il est unique dans cette liste) pour le g\u00e9rer pour <a href=\"https:\/\/thecodest.co\/fr\/blog\/why-us-companies-are-opting-for-polish-developers\/\">nous<\/a>mais cela nous donnera aussi un beau message d'erreur dans la console :<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/fWmP92MWlEdiEo-qINf6WxkfB9ruVrgPnGBCQQwRjm4L2ZplXm72UmL-ChyoXxMbXTuSCkhYGIstU7l6EhT8vSeOrcyuaAqqPn4eYTYp8nXKqqIX5Q72T3Eh93Dg33WWQz9ciCws0.png\" alt=\"\" \/><\/p>\n<p>Pourquoi en est-il ainsi ? La r\u00e9ponse est que l'index du tableau n'est pas stable. Si l'ordre des \u00e9l\u00e9ments change, chacune des cl\u00e9s changera et nous aurons un probl\u00e8me. Si l'ordre des \u00e9l\u00e9ments change, chacune des cl\u00e9s changera et nous aurons un probl\u00e8me. <strong>React<\/strong> Dans une situation o\u00f9 l'ordre d'une liste d'\u00e9l\u00e9ments a \u00e9t\u00e9 modifi\u00e9, il essaiera toujours de les comparer par les cl\u00e9s, ce qui signifie que chaque comparaison aboutira \u00e0 la reconstruction d'un composant et que, par cons\u00e9quent, la liste enti\u00e8re sera reconstruite \u00e0 partir de z\u00e9ro. En outre, nous pouvons rencontrer des probl\u00e8mes inattendus, comme des mises \u00e0 jour de l'\u00e9tat des composants pour des \u00e9l\u00e9ments tels que des entr\u00e9es non contr\u00f4l\u00e9es et d'autres probl\u00e8mes magiques difficiles \u00e0 d\u00e9boguer.<\/p>\n<h2>Exceptions<\/h2>\n<p>Revenons \u00e0 l'index du tableau. Si on l'utilise comme <strong>Cl\u00e9 React<\/strong> peut \u00eatre si probl\u00e9matique, pourquoi <strong>React<\/strong> l'utilisera par d\u00e9faut ? Existe-t-il un cas d'utilisation pour lequel il est acceptable de le faire ? La r\u00e9ponse est oui, le cas d'utilisation est celui des listes statiques. Si vous \u00eates s\u00fbr que la liste que vous rendez ne changera jamais d'ordre, vous pouvez utiliser l'index de tableau, mais rappelez-vous que si vous avez des identifiants uniques, il est pr\u00e9f\u00e9rable de les utiliser \u00e0 la place. Vous pouvez \u00e9galement remarquer que le fait de passer des index en tant que cl\u00e9s rendra la fonction <strong>React<\/strong> dispara\u00eet, tout en d\u00e9clenchant simultan\u00e9ment l'affichage d'une erreur ou d'un avertissement par certains linters externes. Cela est d\u00fb au fait que l'utilisation explicite d'index comme cl\u00e9s est consid\u00e9r\u00e9e comme une mauvaise pratique et que certains linters peuvent la traiter comme une erreur, tandis que <strong>React<\/strong> consid\u00e8re qu'il s'agit d'une situation o\u00f9 \"les d\u00e9veloppeurs savent ce qu'ils font\" - ne le faites donc pas \u00e0 moins que vous ne sachiez vraiment ce que vous faites.  Quelques exemples de cas o\u00f9 il est possible d'utiliser cette exception : un menu d\u00e9roulant avec une liste statique de boutons ou l'affichage d'une liste d'\u00e9l\u00e9ments avec l'adresse de votre entreprise.<\/p>\n<h2>Une alternative \u00e0 la cl\u00e9 bas\u00e9e sur les ensembles de donn\u00e9es<\/h2>\n<p>Supposons qu'aucune des options ci-dessus ne soit envisageable. Par exemple, nous devons afficher une liste d'\u00e9l\u00e9ments bas\u00e9e sur un tableau de cha\u00eenes de caract\u00e8res qui peut \u00eatre dupliqu\u00e9, mais aussi r\u00e9ordonn\u00e9. Dans ce cas, nous ne pouvons utiliser aucune des cha\u00eenes parce qu'elles ne sont pas uniques (ce qui peut \u00e9galement provoquer des bogues magiques), et l'index du tableau n'est pas suffisant parce que nous allons changer l'ordre des \u00e9l\u00e9ments. La derni\u00e8re chose sur laquelle nous pouvons compter dans ce genre de situation est l'utilisation d'identifiants externes. Rappelez-vous qu'ils doivent \u00eatre stables, nous ne pouvons donc pas nous contenter de Math.random(). Il existe des paquets NPM que nous pouvons utiliser dans de tels cas, par exemple le paquet <a href=\"https:\/\/www.npmjs.com\/package\/uuid\" rel=\"nofollow\">\"uuid\"<\/a> paquet. De tels outils peuvent nous aider \u00e0 maintenir la stabilit\u00e9 et l'unicit\u00e9 de nos cl\u00e9s de liste, m\u00eame lorsque nous ne pouvons pas trouver d'identifiants appropri\u00e9s dans notre <a href=\"https:\/\/thecodest.co\/fr\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">donn\u00e9es<\/a> set. Nous devrions envisager d'utiliser d'abord l'ID de la base de donn\u00e9es et l'index du tableau (si possible), afin de minimiser le nombre de paquets utilis\u00e9s par notre <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/why-do-projects-fail\/\">projet<\/a>.<\/p>\n<h2>En r\u00e9sum\u00e9<\/h2>\n<ul>\n<li>Chaque \u00e9l\u00e9ment de la liste des <strong>React<\/strong> doivent avoir un attribut cl\u00e9 unique et stable,<\/li>\n<li><strong>Cl\u00e9s React<\/strong> sont utilis\u00e9s pour acc\u00e9l\u00e9rer le processus de <strong>Processus de r\u00e9conciliation<\/strong> et \u00e9viter de reconstruire inutilement des \u00e9l\u00e9ments sur les listes,<\/li>\n<li>La meilleure source de cl\u00e9s est l'ID unique de la saisie de donn\u00e9es (par exemple, \u00e0 partir de la base de donn\u00e9es),<\/li>\n<li>Vous pouvez utiliser l'index du tableau comme cl\u00e9, mais uniquement pour une liste statique dont l'ordre ne changera pas,<\/li>\n<li>S'il n'y a pas d'autre moyen d'obtenir des cl\u00e9s stables et uniques, envisagez d'utiliser des fournisseurs d'identifiants externes, par exemple le paquet \"uuid\".<\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>En savoir plus :<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Pourquoi vous devriez (probablement) utiliser Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Comment ne pas tuer un projet avec de mauvaises pratiques de codage ?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Strat\u00e9gies de r\u00e9cup\u00e9ration des donn\u00e9es dans NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Transformer un tableau en une liste d'\u00e9l\u00e9ments avec React est assez simple, tout ce que vous avez \u00e0 faire est de mapper ce tableau et de renvoyer l'\u00e9l\u00e9ment appropri\u00e9 pour chaque \u00e9l\u00e9ment du tableau.<\/p>","protected":false},"author":2,"featured_media":3541,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3540","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>React Keys, Yes! You Need Them, but Why Exactly? - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/fr\/blog\/reagir-aux-cles-oui-vous-en-avez-besoin-mais-pourquoi-exactement\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Keys, Yes! You Need Them, but Why Exactly?\" \/>\n<meta property=\"og:description\" content=\"Transforming an array into a list of elements with React is pretty straightforward, basically all you need to do is map that array and return the proper element for every array item.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/fr\/blog\/reagir-aux-cles-oui-vous-en-avez-besoin-mais-pourquoi-exactement\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-24T08:53:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:30:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"React Keys, Yes! You Need Them, but Why Exactly?\",\"datePublished\":\"2021-07-24T08:53:39+00:00\",\"dateModified\":\"2026-04-24T11:30:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"},\"wordCount\":988,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/react_keys_cover.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\",\"name\":\"React Keys, Yes! You Need Them, but Why Exactly? - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/react_keys_cover.png\",\"datePublished\":\"2021-07-24T08:53:39+00:00\",\"dateModified\":\"2026-04-24T11:30:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/react_keys_cover.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/react_keys_cover.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Keys, Yes! You Need Them, but Why Exactly?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/fr\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cl\u00e9s React, oui ! Vous en avez besoin, mais pourquoi exactement ? - The Codest","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:\/\/thecodest.co\/fr\/blog\/reagir-aux-cles-oui-vous-en-avez-besoin-mais-pourquoi-exactement\/","og_locale":"fr_FR","og_type":"article","og_title":"React Keys, Yes! You Need Them, but Why Exactly?","og_description":"Transforming an array into a list of elements with React is pretty straightforward, basically all you need to do is map that array and return the proper element for every array item.","og_url":"https:\/\/thecodest.co\/fr\/blog\/reagir-aux-cles-oui-vous-en-avez-besoin-mais-pourquoi-exactement\/","og_site_name":"The Codest","article_published_time":"2021-07-24T08:53:39+00:00","article_modified_time":"2026-04-24T11:30:22+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"React Keys, Yes! You Need Them, but Why Exactly?","datePublished":"2021-07-24T08:53:39+00:00","dateModified":"2026-04-24T11:30:22+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"},"wordCount":988,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png","articleSection":["Software Development"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","url":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","name":"Cl\u00e9s React, oui ! Vous en avez besoin, mais pourquoi exactement ? - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png","datePublished":"2021-07-24T08:53:39+00:00","dateModified":"2026-04-24T11:30:22+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/react_keys_cover.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"React Keys, Yes! You Need Them, but Why Exactly?"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/fr\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/comments?post=3540"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3540\/revisions"}],"predecessor-version":[{"id":7970,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3540\/revisions\/7970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media\/3541"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media?parent=3540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/categories?post=3540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/tags?post=3540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}