Perché i tasti React sono limitati alle stringhe?

0

In React, quando si esegue il rendering di un mapping da elementi di un elenco / array / iterabile a elementi React, è necessario allegare una chiave univoca localmente a ciascun elemento. Generalmente questo è così che se un elemento cambia o viene rimosso, React deve solo rieseguire il recupero di quell'elemento specifico piuttosto che dell'intera lista. Questa chiave deve essere una stringa e, se una chiave specifica dell'elemento non è disponibile, è disponibile un pacchetto npm * ( shortid ) per generarli.

Perché i progettisti di React hanno impostato questo requisito piuttosto che consentire qualsiasi valore immutabile? In particolare, per me è logico poter usare un Symbol , che non può essere convertito in una stringa univoca. (Dopo aver riesaminato il mio caso specifico in cui volevo usare un Symbol , mi sono reso conto che non era necessario, ma la domanda è ancora valida in generale.)

* C'era anche un pacchetto appositamente progettato per questo chiamato react-key-index ma sembra essere scomparso da github.

    
posta dx_over_dt 09.11.2018 - 22:41
fonte

1 risposta

3

React scrive la chiave nel codice HTML e la riporta indietro durante l'analisi del DOM.

Poiché l'attributo HTML è una stringa, qualunque valore tu gli dai deve essere serializzato su una stringa.

Se si desidera utilizzare stringhe non richieste, è necessario un de / serializzatore e possibilmente un secondo attributo nell'elemento HTML per indicare il tipo di valore della chiave.

Ricorda anche che si tratta essenzialmente di un'ottimizzazione, quindi non è necessario generare nuovamente l'intero codice HTML ad ogni modifica. Quindi qualsiasi cosa che possa rallentare il processo non sarebbe auspicabile.

    
risposta data 10.11.2018 - 11:25
fonte

Leggi altre domande sui tag