{"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":"chaves-de-reacao-sim-precisa-delas-mas-porque-exatamente","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pt\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","title":{"rendered":"Chaves React, sim! Precisa delas, mas porqu\u00ea exatamente?"},"content":{"rendered":"<p>H\u00e1 ainda mais uma coisa que deve ter em conta: o <strong><a href=\"https:\/\/thecodest.co\/pt\/blog\/conditional-component-visibility-in-react\/\">React<\/a> Chave<\/strong> cada elemento da lista renderizada deve ter esse atributo. Este conceito \u00e9 uma das primeiras coisas que todo front-end <a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-vue-js-developers\/\">criador<\/a> aprende sobre <strong>React<\/strong> no in\u00edcio da sua viagem. Agora, vamos aprofundar um pouco mais para explorar por que \u00e9 que isto acontece e quando \u00e9 que podemos tomar alguns atalhos.<\/p>\n<h2>Porque \u00e9 que precisamos deste atributo-chave?<\/h2>\n<p>A resposta mais simples seria \"para otimizar as rendi\u00e7\u00f5es\", mas a mais completa tem de mencionar, pelo menos, o conceito de <strong>React Reconcilia\u00e7\u00e3o<\/strong>. Este \u00e9 o processo de descobrir como atualizar a IU da forma mais eficiente. Para fazer isso rapidamente, <strong>React<\/strong> tem de decidir que partes da \u00e1rvore de elementos precisam de ser actualizadas e quais n\u00e3o precisam. O problema \u00e9 que pode haver muitos elementos no DOM e comparar cada um deles para decidir qual deve ser atualizado \u00e9 bastante dispendioso. Para otimizar isto, <strong>React<\/strong> implementa o algoritmo diffing que se baseia em dois pressupostos:<\/p>\n<ol>\n<li>Dois tipos diferentes de elementos nunca ser\u00e3o iguais - por isso, volte a renderiz\u00e1-los.<\/li>\n<li>Os programadores podem ajudar manualmente a otimizar esse processo atrav\u00e9s de atributos-chave, para que os elementos, mesmo que a sua ordem tenha mudado, possam ser localizados e comparados mais rapidamente.<\/li>\n<\/ol>\n<p>Com base nisso, podemos concluir que cada <strong>Chave React<\/strong> tamb\u00e9m devem ser \u00fanicos (dentro da lista de elementos, n\u00e3o globalmente) e est\u00e1veis (n\u00e3o devem mudar). Mas o que \u00e9 que pode acontecer quando n\u00e3o s\u00e3o assim?<\/p>\n<h2>Singularidade, estabilidade e \u00edndice de matriz<\/h2>\n<p>Como j\u00e1 referimos anteriormente, <strong>Teclas React<\/strong> deve ser est\u00e1vel e \u00fanico. A maneira mais f\u00e1cil de conseguir isso \u00e9 usar um ID exclusivo (por exemplo, de um banco de dados) e pass\u00e1-lo para cada elemento ao mapear um array, f\u00e1cil. Mas e em situa\u00e7\u00f5es em que n\u00e3o temos um ID, um nome ou outros identificadores \u00fanicos para passar para cada elemento? Bem, se n\u00e3o passarmos nada como chave, <strong>React<\/strong> tomar\u00e1 o \u00edndice do array atual por defeito (uma vez que \u00e9 \u00fanico dentro dessa lista) para o tratar para <a href=\"https:\/\/thecodest.co\/pt\/blog\/why-us-companies-are-opting-for-polish-developers\/\">n\u00f3s<\/a>mas tamb\u00e9m nos dar\u00e1 uma boa mensagem de erro na consola:<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/fWmP92MWlEdiEo-qINf6WxkfB9ruVrgPnGBCQQwRjm4L2ZplXm72UmL-ChyoXxMbXTuSCkhYGIstU7l6EhT8vSeOrcyuaAqqPn4eYTYp8nXKqqIX5Q72T3Eh93Dg33WWQz9ciCws0.png\" alt=\"\" \/><\/p>\n<p>Porque \u00e9 que isso acontece? A resposta \u00e9 que o \u00edndice da matriz n\u00e3o \u00e9 est\u00e1vel. Se a ordem dos elementos mudar, cada uma das chaves mudar\u00e1 e teremos um problema. Se <strong>React<\/strong> encontra uma situa\u00e7\u00e3o em que a ordem de uma lista de elementos foi alterada, ele ainda tentar\u00e1 compar\u00e1-los pelas chaves, o que significa que cada compara\u00e7\u00e3o terminar\u00e1 na reconstru\u00e7\u00e3o de um componente e, como resultado, toda a lista ser\u00e1 reconstru\u00edda a partir do zero. Al\u00e9m disso, podemos encontrar alguns problemas inesperados, como actualiza\u00e7\u00f5es do estado do componente para elementos como entradas n\u00e3o controladas e outros problemas m\u00e1gicos dif\u00edceis de depurar.<\/p>\n<h2>Excep\u00e7\u00f5es<\/h2>\n<p>Voltemos ao \u00edndice da matriz. Se o usarmos como um <strong>Chave React<\/strong> pode ser t\u00e3o problem\u00e1tico, porqu\u00ea <strong>React<\/strong> ir\u00e1 utiliz\u00e1-lo por defeito? Existe algum caso de uso em que n\u00e3o h\u00e1 problema em fazer isso? A resposta \u00e9 sim, o caso de uso para isso s\u00e3o as listas est\u00e1ticas. Se tiver a certeza que a lista que est\u00e1 a renderizar nunca mudar\u00e1 de ordem, \u00e9 seguro usar o \u00edndice do array, mas lembre-se, se tiver identificadores \u00fanicos, \u00e9 melhor us\u00e1-los. Voc\u00ea tamb\u00e9m pode notar que passar \u00edndices como chaves far\u00e1 com que o <strong>React<\/strong> a mensagem de erro desaparece, ao mesmo tempo que faz com que alguns dos linters externos apresentem um erro ou aviso. Isto deve-se ao facto de a utiliza\u00e7\u00e3o expl\u00edcita de \u00edndices como chaves ser considerada uma m\u00e1 pr\u00e1tica e alguns linters poderem trat\u00e1-la como um erro, enquanto <strong>React<\/strong> considera que se trata de uma situa\u00e7\u00e3o em que \"os programadores sabem o que est\u00e3o a fazer\" - por isso, n\u00e3o o fa\u00e7a a menos que saiba realmente o que est\u00e1 a fazer.  Alguns exemplos de quando n\u00e3o h\u00e1 problema em utilizar essa exce\u00e7\u00e3o seriam um menu pendente com uma lista est\u00e1tica de bot\u00f5es ou a apresenta\u00e7\u00e3o de uma lista de elementos com a informa\u00e7\u00e3o do endere\u00e7o da sua empresa.<\/p>\n<h2>Uma alternativa a uma chave baseada num conjunto de dados<\/h2>\n<p>Digamos que nenhuma das op\u00e7\u00f5es anteriores \u00e9 adequada para n\u00f3s. Por exemplo, temos de apresentar uma lista de elementos com base num conjunto de cadeias de caracteres que pode ser duplicado, mas que tamb\u00e9m pode ser reordenado. Neste caso, n\u00e3o podemos utilizar nenhuma das cadeias de caracteres porque n\u00e3o s\u00e3o \u00fanicas (o que tamb\u00e9m pode causar alguns erros m\u00e1gicos) e o \u00edndice do conjunto n\u00e3o \u00e9 suficientemente bom porque vamos alterar a ordem dos elementos. A \u00faltima coisa em que podemos confiar em situa\u00e7\u00f5es como esta \u00e9 a utiliza\u00e7\u00e3o de alguns identificadores externos. Lembre-se, ele tem que ser est\u00e1vel, ent\u00e3o n\u00e3o podemos simplesmente usar Math.random(). Existem alguns pacotes NPM que podemos usar nesses casos, por exemplo o <a href=\"https:\/\/www.npmjs.com\/package\/uuid\" rel=\"nofollow\">\"uuid\"<\/a> pacote. Ferramentas como esta podem ajudar-nos a manter as chaves da nossa lista est\u00e1veis e \u00fanicas, mesmo quando n\u00e3o conseguimos encontrar identificadores adequados no nosso <a href=\"https:\/\/thecodest.co\/pt\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dados<\/a> conjunto. Devemos considerar a utiliza\u00e7\u00e3o do ID da base de dados e do \u00edndice da matriz (se poss\u00edvel) em primeiro lugar, para minimizar o n\u00famero de pacotes utilizados pelo nosso <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/why-do-projects-fail\/\">projeto<\/a>.<\/p>\n<h2>Para terminar<\/h2>\n<ul>\n<li>Cada elemento da lista de <strong>React<\/strong> devem ter um atributo-chave \u00fanico e est\u00e1vel,<\/li>\n<li><strong>Teclas React<\/strong> s\u00e3o utilizados para acelerar o <strong>Processo de reconcilia\u00e7\u00e3o<\/strong> e evitar a reconstru\u00e7\u00e3o desnecess\u00e1ria de elementos nas listas,<\/li>\n<li>A melhor fonte para as chaves \u00e9 a ID \u00fanica da entrada de dados (por exemplo, a partir da base de dados),<\/li>\n<li>Pode utilizar o \u00edndice da matriz como chave, mas apenas para uma lista est\u00e1tica cuja ordem n\u00e3o ser\u00e1 alterada,<\/li>\n<li>Se n\u00e3o houver outra forma de obter chaves est\u00e1veis e \u00fanicas, considere a utiliza\u00e7\u00e3o de alguns fornecedores de ID externos, por exemplo, o pacote \"uuid\".<\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>Ler mais:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Porque \u00e9 que deve (provavelmente) utilizar Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Como n\u00e3o matar um projeto com m\u00e1s pr\u00e1ticas de codifica\u00e7\u00e3o?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Estrat\u00e9gias de obten\u00e7\u00e3o de dados no NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Transformar um array em uma lista de elementos com o React \u00e9 bastante simples, basicamente tudo o que voc\u00ea precisa fazer \u00e9 mapear esse array e retornar o elemento adequado para cada item do array.<\/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\/pt\/blogue\/chaves-de-reacao-sim-precisa-delas-mas-porque-exatamente\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/blogue\/chaves-de-reacao-sim-precisa-delas-mas-porque-exatamente\/\" \/>\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 minutos\" \/>\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\":\"pt-PT\",\"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\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\",\"@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\\\/pt\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Chaves React, sim! Precisa delas, mas porqu\u00ea exatamente? - 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\/pt\/blogue\/chaves-de-reacao-sim-precisa-delas-mas-porque-exatamente\/","og_locale":"pt_PT","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\/pt\/blogue\/chaves-de-reacao-sim-precisa-delas-mas-porque-exatamente\/","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 minutos"},"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":"pt-PT","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":"Chaves React, sim! Precisa delas, mas porqu\u00ea exatamente? - 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":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT","@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\/pt\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/comments?post=3540"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3540\/revisions"}],"predecessor-version":[{"id":7970,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3540\/revisions\/7970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media\/3541"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media?parent=3540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/categories?post=3540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/tags?post=3540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}