window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Chiavi React, sì! Ne avete bisogno, ma perché? - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2021-10-12
Sviluppo di software

Chiavi React, sì! Ne avete bisogno, ma perché esattamente?

Przemysław Adamczyk

La trasformazione di un array in un elenco di elementi con React è piuttosto semplice: in pratica, tutto ciò che occorre fare è mappare l'array e restituire l'elemento corretto per ogni elemento dell'array.

C'è anche un'altra cosa di cui bisogna tenere conto, ossia la React Chiave ogni elemento dell'elenco reso deve averlo. Questo concetto è una delle prime cose che ogni sviluppatore di front-end impara a conoscere. React all'inizio del loro viaggio. Ora scaviamo un po' più a fondo per capire perché è così e quando possiamo prendere delle scorciatoie.

Perché abbiamo bisogno di questo attributo chiave?

La risposta più semplice sarebbe "per ottimizzare i re-renders", ma quella più completa deve almeno menzionare il concetto di React Riconciliazione. Si tratta di capire come aggiornare l'interfaccia utente nel modo più efficiente. Per farlo velocemente, React deve decidere quali parti dell'albero degli elementi devono essere aggiornate e quali no. Il problema è che ci possono essere molti elementi nel DOM e confrontare ciascuno di essi per decidere quale deve essere aggiornato è piuttosto costoso. Per ottimizzare questo aspetto, React implementa l'algoritmo di diffing che si basa su due ipotesi:

  1. Due tipi diversi di elementi non saranno mai uguali, quindi renderizzateli nuovamente.
  2. Gli sviluppatori possono contribuire manualmente a ottimizzare questo processo tramite gli attributi chiave, in modo che gli elementi, anche se il loro ordine è cambiato, possano essere localizzati e confrontati più rapidamente.

Sulla base di ciò, possiamo concludere che ogni Chiave React devono essere unici (all'interno dell'elenco di elementi, non a livello globale) e stabili (non devono cambiare). Ma cosa può succedere quando non sono stabili?

Unicità, stabilità e indice dell'array

Come abbiamo già detto, Tasti React deve essere stabile e unico. Il modo più semplice per ottenere questo risultato è usare un ID univoco (per esempio da un database) e passarlo a ogni elemento quando si mappa un array. Ma cosa succede quando non abbiamo un ID, un nome o altri identificatori unici da passare a ogni elemento? Beh, se non passiamo nulla come chiave, React prenderà l'indice dell'array corrente per impostazione predefinita (poiché è unico all'interno dell'elenco) per gestirlo al posto nostro, ma ci darà anche un bel messaggio di errore nella console:

Perché? La risposta è che l'indice dell'array non è stabile. Se l'ordine degli elementi cambia, ciascuna delle chiavi cambierà e si verificherà un problema. Se React incontra una situazione in cui l'ordine in un elenco di elementi è stato cambiato, cercherà comunque di confrontarli in base alle chiavi, il che significa che ogni confronto finirà per ricostruire un componente e, di conseguenza, l'intero elenco verrà ricostruito da zero. Inoltre, si possono verificare alcuni problemi inaspettati, come l'aggiornamento dello stato dei componenti per elementi come ingressi non controllati e altri problemi magici difficili da analizzare.

Eccezioni

Torniamo all'indice dell'array. Se lo si usa come indice Chiave React può essere così problematico, perché React lo utilizzerà in modo predefinito? C'è qualche caso d'uso in cui è giusto farlo? La risposta è sì, il caso d'uso è quello degli elenchi statici. Se si è sicuri che l'elenco che si sta rendendo non cambierà mai il suo ordine, è sicuro usare l'indice dell'array, ma ricordate che se avete degli identificatori unici, è sempre meglio usarli al loro posto. Si può anche notare che passare gli indici come chiavi renderà il metodo React scompare il messaggio di errore, ma contemporaneamente alcuni dei linters esterni visualizzano un errore o un avvertimento. Questo è dovuto al fatto che l'uso esplicito di indici come chiavi è considerato una cattiva pratica e alcuni linters potrebbero trattarlo come un errore, mentre React La stessa considera questa situazione come un "gli sviluppatori sanno cosa stanno facendo", quindi non fatelo a meno che non sappiate davvero cosa state facendo. Alcuni esempi di quando può andare bene usare questa eccezione sono una tendina con un elenco statico di pulsanti o la visualizzazione di un elenco di elementi con le informazioni sull'indirizzo dell'azienda.

Un'alternativa alla chiave basata sul set di dati

Supponiamo che nessuna di queste opzioni sia adatta a noi. Per esempio, dobbiamo visualizzare un elenco di elementi basato su un array di stringhe che può essere duplicato, ma anche riordinato. In questo caso, non possiamo usare nessuna delle stringhe perché non sono uniche (questo può causare anche qualche bug magico) e l'indice dell'array non è sufficiente perché cambieremo l'ordine degli elementi. L'ultima cosa su cui possiamo fare affidamento in situazioni come questa è l'uso di alcuni identificatori esterni. Ricordate che deve essere stabile, quindi non possiamo limitarci a Math.random(). Ci sono alcuni pacchetti NPM che possiamo usare in questi casi, per esempio il pacchetto "uuid" pacchetto. Strumenti come questo possono aiutarci a mantenere stabili e uniche le chiavi dei nostri elenchi, anche quando non riusciamo a trovare identificatori adeguati all'interno del nostro set di dati. Dovremmo considerare di usare prima l'ID del database e l'indice dell'array (se possibile), per ridurre al minimo il numero di pacchetti utilizzati dal nostro progetto.

Per concludere

  • Ogni elemento dell'elenco di React deve avere un attributo chiave unico e stabile,
  • Tasti React sono utilizzati per accelerare la Processo di riconciliazione ed evitare di ricostruire inutilmente gli elementi degli elenchi,
  • La fonte migliore per le chiavi è l'ID univoco di inserimento dati (ad esempio, dal database),
  • È possibile utilizzare l'indice dell'array come chiave, ma solo per un elenco statico il cui ordine non cambierà,
  • Se non c'è altro modo per ottenere chiavi stabili e univoche, si può prendere in considerazione l'uso di alcuni fornitori esterni di ID, ad esempio il pacchetto "uuid".

Per saperne di più:

Perché si dovrebbe (probabilmente) usare Typescript

Come non uccidere un progetto con cattive pratiche di codifica?

Strategie di recupero dei dati in NextJS

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian