2017-12-06 11 views
0

私の状態(配列)から要素をレンダリングしようとしていますが、画面上にレンダーしたくありません。私がconsole.log(b.name)を実行すると、コンソールに自分の名前が記録されます。要素form array.mapはレンダリングしません

renderAllElements() { 
    this.state.myData.map(b => { 
     return(
      <div> 
       <h4>{b.name}</h4> 
      </div> 
     ) 
    }) 
} 

render() { 
    return (
     <div> 
      {this.renderAllElements()} 
     </div> 
    ) 
} 
+1

'this.state.myData'には何がありますか? – Nope

+3

地図を返します。 – Chris

答えて

4

あなたのマップをバック返却する必要があります。

renderAllElements() { 
    return this.state.myData.map(b => { 
     return(
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    ) 
    }) 
} 
+0

ああああ!私はとても気を散らしています:D – Mac

+0

@Macこれらの間違いはすべての開発者に共通していると思います:D – Fawaz

2

あなたは正しくレンダリング方法であなたのrenderAllElements()機能を呼び出しています。また、配列変数を正しくマップしているようですが、マッピングが完了したらレンダリングするために関数は何も返しません。

単にあなたのmap関数の戻りを追加し、それが動作するはずです:

renderAllElements() { 
    return this.state.myData.map(b => { 
     return(
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    ) 
    }) 
} 

ワンライナーの代替:

renderAllElements() { 
    return this.state.myData.map(b => <div><h4>{b.name}</h4></div>); 
} 
1

あなたはすでにあなたが代わりに中括弧なしでそれを書き換えることができます配列関数を使用しているので:

renderAllElements =() => (
    this.state.myData.map(b => (
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    )); 
) 

したがって、return文について覚えておく必要はありません。

関連する問題