2017-11-29 1 views
0

Beim Rendern einer Liste von Elementen verwendet React den Index jedes Elements als Standardschlüssel, wenn keiner angegeben ist.Warum verwendet React den Objektverweis nicht als Schlüssel?

return <div> 
 
    {this.props.shows.map(show => <ShowComp title = {show.title}/>)} 
 
</div>;

Aber warum nicht reagiert das Objekt JS Referenz verwenden jedes Elements statt? Scheint mir wie eine viel sicherere Option, da es nicht zu einem erneuten Rendering der Elemente führen würde, wenn sich die Reihenfolge der Listen ändert (im Gegensatz zum Index-Ansatz).

Ich bin relativ neu zu reagieren, also bin ich sicher, dass es einen Grund gibt.

In Angular, ngFor (die eine Liste von Elementen, ähnlich dem Abbildungsobjekt rendert Elemente zu reagieren), hat es auch eine trackBy Konfigurationsoption (welches das Äquivalent von key in React ist). Wenn es jedoch nicht geliefert wird, verwendet es die Objektreferenzen als eine Kennung, die natürlicher erscheint.

Antwort

0

Der Grund, warum die Referenz des Objekts nicht standardmäßig verwendet wird, ist die Wahl des React-Entwicklers.

Denken Sie daran, es muss nicht über alle Elemente eindeutig sein, es muss eindeutig über die Geschwister jedes Elements sein.

Wie hier gezeigt: https://reactjs.org/docs/reconciliation.html#keys

Sie könnten auf jeden Fall nicht so eindeutigen Schlüssel verwenden, die über Geschwister nur einzigartig ist.

Verwendet auch die Referenz des Objekts schneller als die meisten kleinen Ganzzahl in eindeutigen IDs gefunden?

+0

Danke für die Antwort! Ich habe den "eindeutigen Geschwister-Teil", aber ich sehe immer noch nicht, warum ich den Objektverweis nicht als Schlüssel verwenden kann und warum ich einen String oder eine Zahl verwenden muss. Objektreferenzen sind für jedes Objekt vererbt eindeutig. Vielleicht frage ich nur die falsche Frage? –

Verwandte Themen