2016-04-05 5 views
1

私はRealsについてのpluralsightのチュートリアル(コースは少し前に作られました)を実行していますので、いくつかのものはバベルのように時代遅れです。しかし、私は私が確信している何かに遭遇した。Reactのes6クラスを持つキーの小道

警告:配列またはイテレータの各子は、一意の「キー」小文字を持つ必要があります。 Appのレンダリング方法を確認してください。

ありがとうございます。以下は

は私のアプリのコンポーネントです:

import React from 'react'; 

class App extends React.Component { 
    constructor() { 
    super(); 
    this.state = { 
     messages: [ 
     'hi there, how are you?', 
     'I am fine, and you?' 
     ] 
    }; 
    } 

    render() { 
    var messageNodes = this.state.messages.map(message => { 
     return (
     <div>{message}</div> 
    ); 
    }); 

    return (
     <div>{messageNodes}</div> 
    ); 
    } 
} 

export default App; 
+0

一つおそらくあまりにも役立っています:https://stackoverflow.com/search?q=%5Breactjs%5D+Each+child + in + an +配列+または+イテレータ+は+ a +ユニーク+%22key%22 + propを持ちます。新しい質問をする前に検索を使用してください。 –

+0

https://facebook.github.io/react/docs/reconciliation.htmlこれは多くのことを明確にするはずです。 –

答えて

3

各反復可能な項目は(それがパフォーマンスが向上するという意味でのニーズ)一意の識別子のいくつかの種類を必要とします。

以下のケースでは、配列のインデックスをキーとして追加することはできますが、アプリのサイズが大きくなるにつれて、それらのメッセージに何らかのID(おそらくデータベースなどから来るもの) 。

import React from 'react'; 

class App extends React.Component { 
    constructor() { 
    super(); 
    this.state = { 
     messages: [ 
     'hi there, how are you?', 
     'I am fine, and you?' 
     ] 
    }; 
    } 

    render() { 
    var messageNodes = this.state.messages.map(message, index => { 
     return (
     <div key={index}>{message}</div> 
    ); 
    }); 

    return (
     <div>{messageNodes}</div> 
    ); 
    } 
} 

export default App; 

何か大きなものの一例は次のようになります。これらの

messages: [ 
    { id: 234, text: "Hi there, how are you?" }, 
] 
+0

それはそれをクリアし、多くの意味があります!ありがとうございました! – Jose

+0

全く気にしないでください – Chris

+0

インデックスをidとして使用することは、配列の最後を除いてアイテムを削除したり追加したりしない場合は大丈夫です。つまり、それは脆弱です。 – FakeRainBrigand

関連する問題