2017-10-07 24 views
0

私のループの繰り返しはうまくいかず、画面上でReactを使用していますが、要素が1つしか表示されず、配列には12要素しかありません。誰かが私に理由を教えてくれますか?ループが反応しない

import React from 'react' 
 
import '../custom/style.css' 
 

 
export default props =>{ 
 

 
    const renderRows =() =>{ 
 
    const list = props.list || [] 
 
    for (var i = 0; i < list.length; i++) { 
 
     var obj = list[i]; 
 
     return (
 
     <div key={obj.id}> 
 
      <p>{obj.title}</p> 
 
      <img src={obj.images.normal} /> 
 
      </div> 
 
     ) 
 
    } 
 
    
 
} 
 

 

 
    return(
 
     <div id="demo"> 
 
     {renderRows()} 
 
     </div> 
 
      
 
    ) 
 

 
}

+2

forループ内にreturn文があります。関数はその時点で実行を停止し、1つの要素だけを返します。 forループの代わりに 'list.map'を実行することを意味しましたか? –

+0

マップはある程度機能しますが、オブジェクトの配列です。そして、画像の場合、それは3つの特性を有する物体である。私はどのように読むべきでしょうか?例: "images":{"url": "path"、 "url2": "path2" } –

答えて

1

あなたは最初のループ反復に<div>を返します。配列を作成し、代わりにすべての要素をプッシュする必要があります。私はdiv秒以上のマッピングが容易になり、すなわち

const renderRows =() => { 
    const list = props.list || []; 
    return list.map(obj => (
    <div key={obj.id}> 
     <p>{obj.title}</p> 
     <img src={obj.images.normal} /> 
    </div> 
)); 
}; 
+0

マップはある程度機能しますが、オブジェクトの配列です。そして、画像の場合、それは3つの特性を有する物体である。私はどのように読むべきでしょうか?
例: "images":{"url": "path"、 "url2": "path2" } –

0

map機能を使用してお勧めします。最初の反復後のループreturns、したがって1つだけ<div>

import React from 'react' 
import '../custom/style.css' 

export default rows =() => { 
    return (
    props.list && props.list.map(obj => { 
     <div key={obj.id}> 
     <p>{obj.title}</p> 
     <img src={obj.images.normal}/> 
     </div> 
    }) 
) 
} 
+0

マップはある程度機能しますが、オブジェクトの配列です。そして、画像の場合、それは3つの特性を有する物体である。私はどのように読むべきでしょうか?例: "images":{"url": "path"、 "url2": "path2" } –

+0

JSON.stringiify –

関連する問題