{"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":"reaksjonsnokler-ja-du-trenger-dem-men-hvorfor-akkurat","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/react-keys-yes-you-need-them-but-why-exactly\/","title":{"rendered":"React-n\u00f8kler, ja! Du trenger dem, men hvorfor egentlig?"},"content":{"rendered":"<p>Det er ogs\u00e5 \u00e9n ting til du m\u00e5 huske p\u00e5, og det er <strong><a href=\"https:\/\/thecodest.co\/nb\/blog\/conditional-component-visibility-in-react\/\">React<\/a> N\u00f8kkel<\/strong> attributtet, m\u00e5 hvert element i den gjengitte listen ha det. Dette konseptet er noe av det f\u00f8rste alle front-end <a href=\"https:\/\/thecodest.co\/nb\/blog\/hire-vue-js-developers\/\">utvikler<\/a> l\u00e6rer om <strong>React<\/strong> i begynnelsen av reisen. La oss n\u00e5 grave litt dypere for \u00e5 finne ut hvorfor det er slik, og n\u00e5r vi kan ta noen snarveier.<\/p>\n<h2>Hvorfor trenger vi denne n\u00f8kkelegenskapen?<\/h2>\n<p>Det enkleste svaret her ville v\u00e6re \"for \u00e5 optimalisere re-rendering\", men et mer fullstendig svar m\u00e5 i det minste nevne konseptet med <strong>React Avstemming<\/strong>. Dette er prosessen med \u00e5 finne ut hvordan du oppdaterer brukergrensesnittet p\u00e5 den mest effektive m\u00e5ten. For \u00e5 gj\u00f8re det raskt, <strong>React<\/strong> m\u00e5 avgj\u00f8re hvilke deler av elementtreet som skal oppdateres, og hvilke som ikke skal det. Problemet er at det kan v\u00e6re mange elementer i DOM-en, og det er ganske kostbart \u00e5 sammenligne hvert av dem for \u00e5 avgj\u00f8re hvilket som skal oppdateres. For \u00e5 optimalisere dette, <strong>React<\/strong> implementerer diffing-algoritmen, som er basert p\u00e5 to forutsetninger:<\/p>\n<ol>\n<li>To forskjellige typer elementer vil aldri v\u00e6re like - s\u00e5 gj\u00f8r dem om igjen.<\/li>\n<li>Utviklere kan manuelt bidra til \u00e5 optimalisere prosessen ved hjelp av n\u00f8kkelattributter, slik at elementene kan lokaliseres og sammenlignes raskere, selv om rekkef\u00f8lgen p\u00e5 dem er endret.<\/li>\n<\/ol>\n<p>Basert p\u00e5 dette kan vi konkludere med at hver <strong>React-n\u00f8kkel<\/strong> skal ogs\u00e5 v\u00e6re unike (innenfor listen av elementer, ikke globalt), og stabile (skal ikke endres). Men hva kan skje n\u00e5r de ikke er det?<\/p>\n<h2>Unikhet, stabilitet og matriseindeks<\/h2>\n<p>Som vi har nevnt tidligere, <strong>React-taster<\/strong> b\u00f8r v\u00e6re stabil og unik. Den enkleste m\u00e5ten \u00e5 oppn\u00e5 dette p\u00e5 er \u00e5 bruke en unik ID (for eksempel fra en database) og sende den til hvert element n\u00e5r du tilordner en matrise. Men hva med situasjoner der vi ikke har en ID, et navn eller andre unike identifikatorer \u00e5 sende til hvert element? Hvis vi ikke oppgir noe som n\u00f8kkel, er det enkelt, <strong>React<\/strong> vil som standard ta den gjeldende matriseindeksen (siden den er unik innenfor listen) for \u00e5 h\u00e5ndtere den for <a href=\"https:\/\/thecodest.co\/nb\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a>men det vil ogs\u00e5 gi oss en fin feilmelding i konsollen:<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/fWmP92MWlEdiEo-qINf6WxkfB9ruVrgPnGBCQQwRjm4L2ZplXm72UmL-ChyoXxMbXTuSCkhYGIstU7l6EhT8vSeOrcyuaAqqPn4eYTYp8nXKqqIX5Q72T3Eh93Dg33WWQz9ciCws0.png\" alt=\"\" \/><\/p>\n<p>Hvorfor er det slik? Svaret er at matriseindeksen ikke er stabil. Hvis rekkef\u00f8lgen p\u00e5 elementene endres, vil hver av n\u00f8klene endres, og vi har et problem. Hvis <strong>React<\/strong> oppst\u00e5r en situasjon der rekkef\u00f8lgen i en liste med elementer ble endret, vil den fortsatt pr\u00f8ve \u00e5 sammenligne dem etter n\u00f8klene, noe som betyr at hver sammenligning vil ende opp med \u00e5 bygge en komponent p\u00e5 nytt, og som et resultat vil hele listen bli bygget opp p\u00e5 nytt fra bunnen av. I tillegg kan vi st\u00f8te p\u00e5 noen uventede problemer, som oppdateringer av komponenttilstanden for elementer som ukontrollerte innganger og andre magiske problemer som er vanskelige \u00e5 feils\u00f8ke.<\/p>\n<h2>Unntak<\/h2>\n<p>La oss g\u00e5 tilbake til matriseindeksen. Hvis du bruker den som en <strong>React-n\u00f8kkel<\/strong> kan v\u00e6re s\u00e5 problematisk, hvorfor <strong>React<\/strong> vil bruke det som standard? Finnes det noen brukstilfeller der det er greit \u00e5 gj\u00f8re det? Svaret er ja, det er i statiske lister. Hvis du er sikker p\u00e5 at en liste du gjengir aldri vil endre rekkef\u00f8lgen, er det trygt \u00e5 bruke matriseindeks, men husk at hvis du har unike identifikatorer, er det fortsatt bedre \u00e5 bruke dem i stedet. Du kan ogs\u00e5 legge merke til at hvis du bruker indekser som n\u00f8kler, vil <strong>React<\/strong> feilmeldingen forsvinner, samtidig som noen av de eksterne linterne viser en feil eller advarsel. Dette skyldes at eksplisitt bruk av indekser som n\u00f8kler anses som en d\u00e5rlig praksis, og noen lintere kan behandle det som en feil, mens <strong>React<\/strong> selv anser det som en \"utviklerne vet hva de gj\u00f8r\"-situasjon - s\u00e5 ikke gj\u00f8r det med mindre du virkelig vet hva du gj\u00f8r.  Noen eksempler p\u00e5 n\u00e5r det kan v\u00e6re greit \u00e5 bruke dette unntaket, er en nedtrekksmeny med en statisk liste med knapper eller visning av en liste med elementer med firmaets adresseinformasjon.<\/p>\n<h2>Et alternativ til en datasettbasert n\u00f8kkel<\/h2>\n<p>La oss si at ingen av de ovennevnte er et alternativ for oss. Vi m\u00e5 for eksempel vise en liste med elementer basert p\u00e5 en matrise med strenger som kan dupliseres, men som ogs\u00e5 kan omorganiseres. I dette tilfellet kan vi ikke bruke noen av strengene fordi de ikke er unike (dette kan ogs\u00e5 for\u00e5rsake noen magiske feil), og matriseindeksen er ikke god nok fordi vi vil endre rekkef\u00f8lgen p\u00e5 elementene. Det siste vi kan stole p\u00e5 i situasjoner som dette, er bruken av noen eksterne identifikatorer. Husk at det m\u00e5 v\u00e6re stabilt, s\u00e5 vi kan ikke bare bruke Math.random(). Det finnes noen NPM-pakker som vi kan bruke i slike tilfeller, for eksempel <a href=\"https:\/\/www.npmjs.com\/package\/uuid\" rel=\"nofollow\">\"uuid\"<\/a> pakken. Slike verkt\u00f8y kan hjelpe oss med \u00e5 holde listen\u00f8klene v\u00e5re stabile og unike, selv n\u00e5r vi ikke finner de riktige identifikatorene i <a href=\"https:\/\/thecodest.co\/nb\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> sett. Vi b\u00f8r vurdere \u00e5 bruke database-ID og matriseindeks (hvis mulig) f\u00f8rst, for \u00e5 minimere antall pakker som brukes av v\u00e5r <a href=\"https:\/\/thecodest.co\/nb\/dictionary\/why-do-projects-fail\/\">prosjekt<\/a>.<\/p>\n<h2>For \u00e5 oppsummere<\/h2>\n<ul>\n<li>Hvert element p\u00e5 listen over <strong>React<\/strong> elementer b\u00f8r ha et unikt, stabilt n\u00f8kkelattributt,<\/li>\n<li><strong>React-taster<\/strong> brukes til \u00e5 \u00f8ke hastigheten p\u00e5 <strong>Avstemmingsprosessen<\/strong> og unng\u00e5 un\u00f8dvendig ombygging av elementer p\u00e5 listene,<\/li>\n<li>Den beste kilden for n\u00f8kler er unik ID for dataregistrering (for eksempel fra databasen),<\/li>\n<li>Du kan bruke matriseindeksen som n\u00f8kkel, men bare for en statisk liste hvis rekkef\u00f8lge ikke endres,<\/li>\n<li>Hvis det ikke finnes noen annen m\u00e5te \u00e5 f\u00e5 stabile og unike n\u00f8kler p\u00e5, kan du vurdere \u00e5 bruke eksterne ID-leverand\u00f8rer, for eksempel \"uuid\"-pakken.<\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>Les mer om dette:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Derfor b\u00f8r du (sannsynligvis) bruke Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Hvordan unng\u00e5r man \u00e5 drepe et prosjekt med d\u00e5rlig kodingspraksis?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Strategier for datahenting i NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Det er ganske enkelt \u00e5 transformere en matrise til en liste med elementer med React. Alt du trenger \u00e5 gj\u00f8re, er \u00e5 tilordne matrisen og returnere det riktige elementet for hvert element i matrisen.<\/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\/nb\/blogg\/reaksjonsnokler-ja-du-trenger-dem-men-hvorfor-akkurat\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\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\/nb\/blogg\/reaksjonsnokler-ja-du-trenger-dem-men-hvorfor-akkurat\/\" \/>\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\":\"nb-NO\",\"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\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/react-keys-yes-you-need-them-but-why-exactly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\",\"@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\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React-n\u00f8kler, ja! Du trenger dem, men hvorfor egentlig? - 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\/nb\/blogg\/reaksjonsnokler-ja-du-trenger-dem-men-hvorfor-akkurat\/","og_locale":"nb_NO","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\/nb\/blogg\/reaksjonsnokler-ja-du-trenger-dem-men-hvorfor-akkurat\/","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":"nb-NO","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\u00f8kler, ja! Du trenger dem, men hvorfor egentlig? - 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":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/react-keys-yes-you-need-them-but-why-exactly\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO","@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\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3540"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3540\/revisions"}],"predecessor-version":[{"id":7970,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3540\/revisions\/7970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3541"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}