2016-11-03 7 views
0

したがって、Reactでデータのリストを作成するときは、通常、マップ関数を使用します。しかし、それは配列のためだけに働くので、私はオブジェクトを持っているので、これについてどうやって行くのかは分かりません。私はそれをやろうとしていますかオブジェクトとの反応でJSXリストを作成する

だから、私はここに、これらの各オブジェクト内に含まれるURLから画像をレンダリングしようとしている、としています

[Object, Object, Object] 
0:Object 
1:Object 
2:Object 
length:3 
__proto__:Array[0] 

次のオブジェクトをされています。

import React from 'react'; 

const EvolutionChainComponent = ({data}) => { 
    console.log(data); 
    for(let key in data){ 
     console.log(data[key]); 
     return(
      <div> 
       <img src={data[key].sprites.front_default} role='presentation'/> 
      </div> 
     ) 
    } 
} 

export default EvolutionChainComponent; 

私はforループを使用しているので、一度divを返すとコードがループから抜けてしまうという問題があります。私はオブジェクトを反復することでこれを行う簡単な方法があると確信していますが、配列上のマップ関数で使用されたReactデータの反復しか見たことがないので、それが何であるかはわかりません。

+0

オブジェクトの配列を調べて、そのオブジェクトのキーにアクセスするのではなく、 'data [key ] .sprites.front_default'。この場合、マップは移動する方法です。私はObject.keys()をループする必要はないと思う。 –

+0

@ShubhamKhatri - うん、あなたは正しい。私は完全にそれが配列だったので、私はconsole.logのtypeofデータ、オブジェクトを返したので逃した。そして、配列もオブジェクトの一種であることを忘れていました。 –

答えて

1

オブジェクトを反復処理する必要はありませんがオブジェクトの配列をループするには

import React from 'react'; 

const EvolutionChainComponent = ({data}) => { 
    console.log(data); 
    data.map(function(item){ 
     return(
      <div> 
       <img src={item.sprites.front_default} role='presentation'/> 
      </div> 
     ) 
    }) 

} 

export default EvolutionChainComponent; 
1

あなたはキーの上にマッピングして、代わりにちょうど1要素の要素の配列を返すためにObject.keysを使用することができます、あなたは、単純なマップ・メソッドを使用する必要が

import React from 'react'; 

const EvolutionChainComponent = ({data}) => { 
    return Object.keys(data).map((key, index) => (
     <div key={index}> 
      <img src={data[key].sprites.front_default} role='presentation'/> 
     </div> 
    )); 
} 

export default EvolutionChainComponent; 
+0

これを実行しようとすると、次のエラーが発生します。 invariant.js:38未知(約束)エラー:EvolutionChainComponent(...):有効なReact要素(またはnull)を返す必要があります。あなたは未定義、配列またはその他の無効なオブジェクトを返している可能性があります。(...) –

+0

この回答であなたの時間を無駄にしてしまって申し訳ありません。私はちょうど普通の古いarray.prototype.mapを使う必要があった –

関連する問題