2017-01-12 8 views
0

ユニークキーを持つ必要があるというエラーが表示されるのはなぜですか? This.props.numbersは数値の配列であり、以下のコードを使用して生成/表示を行います。私はまだ、しかし、エラーが発生します:配列またはイテレータの各子は、ユニークな 'キー'小道具を持つ必要があります。React-native - ユニークキーに関するエラー

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

答えて

1

Reactは、項目が変更されたかどうかを判断する方法を最適化し、すべてを再レンダリングする必要がないため、キーを提供したいと考えています。このようなキーを追加するだけです:

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

ありがとう、それは動作します。ご覧のとおり、私は既にSquare要素にキーを持っていましたが、最も外側の要素にあるように見えますか? – Wasteland

+0

ああ、そうは見えなかった。うん、それは外側の要素にしなければならないと私はあなたが '私は'を削除することができますし、それらがすべてのユニークな要素であれば、単に 'sq'を使用すると思います。 –

+0

インデックスとしてキーを使用することは一般的には良い考えではないと思います。あなたのケースではうまくいくかもしれません。しかし、配列要素を挿入または削除する必要がある場合は、同じキー・ノーを持つ新しい要素が異なる内容を表示するため、react-nativeが混乱する可能性があります。コンテンツへの1:1マッピングを持つ値を使用します。 –

関連する問題