{"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":"reaktionsnogler-ja-du-har-brug-for-dem-men-hvorfor-egentlig","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","title":{"rendered":"React-n\u00f8gler, ja! Du har brug for dem, men hvorfor egentlig?"},"content":{"rendered":"<p>Der er ogs\u00e5 en anden ting, du skal huske p\u00e5, og det er <strong><a href=\"https:\/\/thecodest.co\/da\/blog\/conditional-component-visibility-in-react\/\">React<\/a> N\u00f8gle<\/strong> attribut, skal hvert element i den gengivne liste have den. Dette koncept er en af de f\u00f8rste ting, enhver front-end <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-vue-js-developers\/\">Udvikler<\/a> l\u00e6rer om <strong>React<\/strong> i starten af deres rejse. Lad os nu grave lidt dybere for at unders\u00f8ge, hvorfor det er tilf\u00e6ldet, og hvorn\u00e5r vi kan tage nogle genveje.<\/p>\n<h2>Hvorfor har vi brug for denne n\u00f8gleegenskab?<\/h2>\n<p>Det enkleste svar her ville v\u00e6re \"at optimere genindl\u00e6sninger\", men det mere komplette svar m\u00e5 i det mindste n\u00e6vne begrebet <strong>React Afstemning<\/strong>. Det er processen med at finde ud af, hvordan man opdaterer brugergr\u00e6nsefladen p\u00e5 den mest effektive m\u00e5de. For at g\u00f8re det hurtigt, <strong>React<\/strong> skal beslutte, hvilke dele af elementtr\u00e6et der skal opdateres, og hvilke der ikke skal. Sagen er, at der kan v\u00e6re mange elementer i DOM'en, og det er ret dyrt at sammenligne hvert enkelt af dem for at beslutte, hvilket der skal opdateres. For at optimere dette, <strong>React<\/strong> implementerer diffing-algoritmen, som er baseret p\u00e5 to antagelser:<\/p>\n<ol>\n<li>To forskellige typer elementer vil aldrig v\u00e6re ens - s\u00e5 gengiv dem igen.<\/li>\n<li>Udviklere kan manuelt hj\u00e6lpe med at optimere den proces via n\u00f8gleattributter, s\u00e5 elementerne, selv om deres r\u00e6kkef\u00f8lge er \u00e6ndret, kan lokaliseres og sammenlignes hurtigere.<\/li>\n<\/ol>\n<p>Ud fra det kan vi konkludere, at hver <strong>React-n\u00f8gle<\/strong> b\u00f8r ogs\u00e5 v\u00e6re unikke (inden for listen af elementer, ikke globalt) og stabile (b\u00f8r ikke \u00e6ndre sig). Men hvad kan der ske, n\u00e5r de ikke er det?<\/p>\n<h2>Entydighed, stabilitet og matrixindeks<\/h2>\n<p>Som vi n\u00e6vnte f\u00f8r, <strong>React-taster<\/strong> skal v\u00e6re stabil og unik. Den nemmeste m\u00e5de at opn\u00e5 dette p\u00e5 er at bruge et unikt ID (f.eks. fra en database) og give det til hvert element, n\u00e5r man mapper et array, nemt. Men hvad med situationer, hvor vi ikke har et ID, et navn eller andre unikke identifikatorer, som vi kan sende til hvert element? Hvis vi ikke sender noget som n\u00f8gle, er det nemt, <strong>React<\/strong> vil som standard tage det aktuelle matrixindeks (da det er unikt inden for listen) for at h\u00e5ndtere det for <a href=\"https:\/\/thecodest.co\/da\/blog\/why-us-companies-are-opting-for-polish-developers\/\">os<\/a>men det vil ogs\u00e5 give os en fin fejlmeddelelse i konsollen:<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/fWmP92MWlEdiEo-qINf6WxkfB9ruVrgPnGBCQQwRjm4L2ZplXm72UmL-ChyoXxMbXTuSCkhYGIstU7l6EhT8vSeOrcyuaAqqPn4eYTYp8nXKqqIX5Q72T3Eh93Dg33WWQz9ciCws0.png\" alt=\"\" \/><\/p>\n<p>Hvorfor er det tilf\u00e6ldet? Svaret er, at array-indekset ikke er stabilt. Hvis elementernes r\u00e6kkef\u00f8lge \u00e6ndres, vil hver af n\u00f8glerne \u00e6ndre sig, og s\u00e5 har vi et problem. Hvis <strong>React<\/strong> m\u00f8der en situation, hvor r\u00e6kkef\u00f8lgen i en liste af elementer blev \u00e6ndret, vil den stadig fors\u00f8ge at sammenligne dem ved hj\u00e6lp af n\u00f8glerne, hvilket betyder, at hver sammenligning vil ende med at genopbygge en komponent, og som f\u00f8lge heraf vil hele listen blive genopbygget fra bunden. Derudover kan vi st\u00f8de p\u00e5 nogle uventede problemer, som f.eks. opdateringer af komponenttilstanden for elementer som ukontrollerede input og andre magiske problemer, der er sv\u00e6re at fejlfinde.<\/p>\n<h2>Undtagelser<\/h2>\n<p>Lad os vende tilbage til array-indekset. Hvis du bruger det som et <strong>React-n\u00f8gle<\/strong> kan v\u00e6re s\u00e5 problematisk, hvorfor <strong>React<\/strong> vil bruge det som standard? Er der nogen brugsscenarier, hvor det er okay at g\u00f8re det? Svaret er ja, det er tilf\u00e6ldet med statiske lister. Hvis du er sikker p\u00e5, at en liste, du gengiver, aldrig vil \u00e6ndre r\u00e6kkef\u00f8lge, er det sikkert at bruge array-indeks, men husk, at hvis du har unikke identifikatorer, er det stadig bedre at bruge dem i stedet. Du kan ogs\u00e5 bem\u00e6rke, at hvis du bruger indekser som n\u00f8gler, vil det g\u00f8re <strong>React<\/strong> fejlmeddelelse forsvinder, samtidig med at nogle af de eksterne linters viser en fejl eller advarsel. Det skyldes, at eksplicit brug af indekser som n\u00f8gler anses for at v\u00e6re en d\u00e5rlig praksis, og nogle linters vil m\u00e5ske behandle det som en fejl, mens <strong>React<\/strong> selv betragter det som en \"udviklerne ved, hvad de g\u00f8r\"-situation - s\u00e5 lad v\u00e6re med at g\u00f8re det, medmindre du virkelig ved, hvad du g\u00f8r.  Et par eksempler p\u00e5, hvorn\u00e5r det kan v\u00e6re okay at bruge denne undtagelse, er en dropdown med en statisk liste af knapper eller visning af en liste af elementer med din virksomheds adresseoplysninger.<\/p>\n<h2>Et alternativ til en datas\u00e6t-baseret n\u00f8gle<\/h2>\n<p>Lad os sige, at ingen af ovenst\u00e5ende er en mulighed for os. Vi skal f.eks. vise en liste med elementer baseret p\u00e5 et array af strenge, som kan duplikeres, men som ogs\u00e5 kan omordnes. I dette tilf\u00e6lde kan vi ikke bruge nogen af strengene, fordi de ikke er unikke (det kan ogs\u00e5 for\u00e5rsage nogle magiske fejl), og array-indekset er ikke godt nok, fordi vi vil \u00e6ndre elementernes r\u00e6kkef\u00f8lge. Den sidste ting, vi kan stole p\u00e5 i situationer som denne, er brugen af nogle eksterne identifikatorer. Husk, at det skal v\u00e6re stabilt, s\u00e5 vi kan ikke bare bruge Math.random(). Der er nogle NPM-pakker, som vi kan bruge i s\u00e5danne tilf\u00e6lde, f.eks. <a href=\"https:\/\/www.npmjs.com\/package\/uuid\" rel=\"nofollow\">\"uuid\"<\/a> pakke. Den slags v\u00e6rkt\u00f8jer kan hj\u00e6lpe os med at holde vores listen\u00f8gler stabile og unikke, selv n\u00e5r vi ikke kan finde de rigtige identifikatorer i vores <a href=\"https:\/\/thecodest.co\/da\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> s\u00e6t. Vi b\u00f8r overveje at bruge database-ID og matrixindeks (hvis det er muligt) f\u00f8rst for at minimere antallet af pakker, der bruges af vores <a href=\"https:\/\/thecodest.co\/da\/dictionary\/why-do-projects-fail\/\">projekt<\/a>.<\/p>\n<h2>For at afslutte det hele<\/h2>\n<ul>\n<li>Hvert element p\u00e5 listen over <strong>React<\/strong> elementer skal have en unik, stabil n\u00f8gleattribut,<\/li>\n<li><strong>React-taster<\/strong> bruges til at fremskynde <strong>Afstemningsproces<\/strong> og undg\u00e5 un\u00f8dvendig genopbygning af elementer p\u00e5 listerne,<\/li>\n<li>Den bedste kilde til n\u00f8gler er dataindtastningens unikke ID (f.eks. fra databasen),<\/li>\n<li>Du kan bruge array-indekset som n\u00f8gle, men kun til en statisk liste, hvis r\u00e6kkef\u00f8lge ikke \u00e6ndres,<\/li>\n<li>Hvis der ikke er andre m\u00e5der at f\u00e5 stabile og unikke n\u00f8gler p\u00e5, kan du overveje at bruge nogle eksterne ID-udbydere, f.eks. pakken \"uuid\".<\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>L\u00e6s mere om det:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Hvorfor du (sandsynligvis) b\u00f8r bruge Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Hvordan dr\u00e6ber man ikke et projekt med d\u00e5rlig kodningspraksis?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Strategier for at hente data i NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Det er ret ligetil at omdanne et array til en liste med elementer med React, det eneste, du skal g\u00f8re, er at mappe arrayet og returnere det rigtige element for hvert array-element.<\/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\/da\/blog\/reaktionsnogler-ja-du-har-brug-for-dem-men-hvorfor-egentlig\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/blog\/reaktionsnogler-ja-du-har-brug-for-dem-men-hvorfor-egentlig\/\" \/>\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 minutter\" \/>\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\":\"da-DK\",\"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\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@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\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@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\":\"da-DK\",\"@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\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React-n\u00f8gler, ja! Du har brug for dem, men hvorfor egentlig? - Den kodeste","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\/da\/blog\/reaktionsnogler-ja-du-har-brug-for-dem-men-hvorfor-egentlig\/","og_locale":"da_DK","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\/da\/blog\/reaktionsnogler-ja-du-har-brug-for-dem-men-hvorfor-egentlig\/","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 minutter"},"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":"da-DK","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-n\u00f8gler, ja! Du har brug for dem, men hvorfor egentlig? - Den kodeste","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":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@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":"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":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@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":"da-DK","@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\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3540"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3540\/revisions"}],"predecessor-version":[{"id":7970,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3540\/revisions\/7970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3541"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}