2017-01-12 3 views
0

Warum bekomme ich immer noch den Fehler, einen eindeutigen Schlüssel zu haben? This.props.numbers ist ein Array von Zahlen und sie erzeugen/zeigen mit dem folgenden Code Ordnung. Ich bekomme jedoch immer noch den Fehler: Jedes Kind in einem Array oder einem Iterator sollte eine eindeutige 'Schlüssel' Stütze haben.React-native - Fehler über eindeutigen Schlüssel

generateGrid() { 
    return this.props.numbers.map((sq) => 
     <TouchableWithoutFeedback> 
     <Square key={sq} style={{ height: 30, width: 30 }}> 
      <Text> 
      {sq} 
      </Text> 
     </Square> 
     </TouchableWithoutFeedback> 
    ); 
    } 

Antwort

1

React möchte, dass Sie einen Schlüssel bereitstellen, weil er optimiert, wie er bestimmt, ob Elemente geändert wurden und nicht alles neu gerendert werden müssen. Fügen Sie einfach einen Schlüssel wie folgt hinzu:

generateGrid() { 
    return this.props.numbers.map((sq, i) => 
     <TouchableWithoutFeedback key={i} > //Here 
     <Square key={sq} style={{ height: 30, width: 30 }}> 
      <Text> 
      {sq} 
      </Text> 
     </Square> 
     </TouchableWithoutFeedback> 
    ); 
    } 
+0

Ok. Danke, es funktioniert. Wie Sie sehen können, hatte ich bereits den Schlüssel auf dem Square-Element, aber es sieht so aus, als ob es auf dem äußersten Element sein müsste, oder? – Wasteland

+0

Oh ja, habe das nicht gesehen. Yup es muss auf dem äußeren Element sein und ich denke, Sie können das 'i' entfernen und einfach 'sq' verwenden, wenn sie alle auch einzigartige Elemente sind. –

+0

Ich glaube nicht, dass es eine gute Idee ist, den Index als Schlüssel zu verwenden. Es könnte in Ihrem Fall funktionieren. Wenn Sie jedoch Array-Elemente einfügen oder löschen müssen, wird reactive-native möglicherweise verwechselt, da ein neues Element mit denselben Schlüsselwerten anderen Inhalt anzeigt. Verwenden Sie einen Wert, der eine 1: 1-Zuordnung zum Inhalt aufweist. –

Verwandte Themen