L'attributo data-reactid
è un attributo personalizzato utilizzato in modo che React può identificare in modo univoco i suoi componenti all'interno del DOM.
Questo è importante perché le applicazioni React possono essere rendered at the server e il client. Internally React crea una rappresentazione di riferimenti ai nodi DOM che costituiscono la tua applicazione (la versione semplificata è sotto).
{
id: '.1oqi7occu80',
node: DivRef,
children: [
{
id: '.1oqi7occu80.0',
node: SpanRef,
children: [
{
id: '.1oqi7occu80.0.0',
node: InputRef,
children: []
}
]
}
]
}
Non c'è modo di condividere i riferimenti agli oggetti reali tra il server e il client e l'invio di una versione serializzata dell'intero albero componente è potenzialmente costoso.Quando l'applicazione viene sottoposta a rendering sul server e React viene caricato sul client, gli unici dati che possiede sono gli attributi data-reactid
.
<div data-reactid='.loqi70ccu80'>
<span data-reactid='.loqi70ccu80.0'>
<input data-reactid='.loqi70ccu80.0' />
</span>
</div>
Deve essere in grado di riconvertirlo nella struttura dati di cui sopra. Il modo in cui lo fa è con gli attributi unici data-reactid
. Questo è chiamato gonfiando l'albero dei componenti.
Si potrebbe inoltre notare che se React esegue il rendering sul lato client, utilizza l'attributo data-reactid
, anche se non ha bisogno di perdere i riferimenti. In alcuni browser inserisce la tua applicazione nel DOM utilizzando .innerHTML
, quindi gonfia immediatamente l'albero dei componenti, come un aumento delle prestazioni.
L'altra differenza interessante è che lato client resi React ids avranno un formato intero incrementale (come .0.1.4.3
), mentre quelli del server saranno resi prefissati con una stringa casuale (come .loqi70ccu80.1.4.3
). Questo perché l'applicazione potrebbe essere sottoposta a rendering su più server ed è importante che non vi siano collisioni. Sul lato client esiste un solo processo di rendering, il che significa che i contatori possono essere utilizzati per garantire ID univoci.
React 15 uses document.createElement
instead, quindi il markup reso client non includerà più questi attributi.
'data-reactid' è un attributo personalizzato utilizzato da [React JavaScript library] (http://facebook.github.io/react/). Che è stato sviluppato per l'uso con Facebook e Instagram. – amit
Si prega di notare che tutte le risposte stanno spiegando quali sono gli attributi di data personalizzati e non si spiega quale sia il reattivo di dati. Viene utilizzato da react per poter fare riferimento all'oggetto dom con l'istanza della classe dell'elemento react. – adrianj98
@ adrianj98, perché non hai pubblicato il tuo commento come risposta? – Octopus