2016-09-16 5 views
0

私は反応があり、私はthis.stateの中で誕生日をレンダリングする方法に固執しています。反応内の状態内のコンポーネントをどのようにレンダリングするのですか?

{this.state.birthdays} 

しかし、それは各誕生日には達していないようです。私のgetElementByIDは、私のHTML上に存在するコンテナと等しいです。どんな助言/助けも素晴らしいだろう!

renderBirthdays: function(key) { 
    return (
     <div key={key} index={key} details={this.state.birthdays[key]}> 
       {details.name} - {details.date} 
     </div> 
    ) 
}, 
render: function() { 
    return (
     <div>{ Object.keys(this.state.birthdays).map(this.renderBirthdays) }</div> 
    ) 
} 

だから、あなたのオブジェクトがかかりますjavascripts mapを利用することができます。このようrenderBirthdaysと呼ばれる関数を作成し、あなたのレンダリング機能の上に、その後

{ Object.keys(this.state.birthdays).map(this.renderBirthdays) } 

をそして:

class App extends React.Component { 
      constructor(props) { 
      super(props); 

      this.state = { 
       birthdays: { 
       'January': [{ 
        name: 'Mike', 
        date: '1/14/90' 
       }, { 
        name: 'Joe', 
        date: '1/7/92' 
       }], 

       March: [{ 
        name: 'Mary', 
        date: '3/7/88' 
       }] 
       } 
      } 
      } 

      render() { 
      return ( 
       <div> 

       </div> 
      ); 
      } 
     } 
ReactDOM.render(<App />, 
document.getElementById('container')); 
+0

Object.keysを使用して、月のキーの上にループが、その後、フラットな配列に誕生日の各セットを減らしますちょうど

と表示されます。どのようにそれを表示しようとしていますか? –

+0

私の投稿の冒頭で、私は{this.state.birthdays}を使ってみたが、うまくいきませんでした。 –

+1

あなたの部署では '{this.state.birthdays ['January'] [0]のようなことをします。 name} 'を使用するか、mapを使用して月をループし、そのようにデータを表示することができます。 –

答えて

0

これはテストされていませんが、このようなものが動作するはずです。あなたの状態オブジェクトを移入しているが、あなたは、レンダリング機能でそれを何もしていないので、何のデータいない

render() { 
    return ( 
     <div> 
     {Object.keys(this.state.birthdays).reduce((birthdays, month) => { 
      return birthdays.concat(this.state.birthdays[month].map((bday) => { 
       return (
        <p>{bday.name} - {bday.date}</p> 
       ); 
      })); 
     }, [])} 
     </div> 
    ); 
} 
+0

こんにちはロブ、ありがとう、私はこれもチェックします。 –

+0

それは、ありがとう! –

1

これを試してみてくださいそれらをキー入力します。次に、このキーをrenderBirthdaysという関数に渡して、アイテムを繰り返し処理します。要素にキーとインデックスを渡す必要があります。使いやすさのために、反復処理中の現在選択されている項目と同じ大きさの小出しを渡すことができます。そうすれば、要素内に{details.name}などを使用できます。

+0

こんにちはありがとう!私はまだ私のコードを修正していますが、renderBirthdays ... render()の上にあり、{object.keys ...}は戻り値内になければなりません。私はちょうどあなたがしたことが正しいと確信していても、私はまだ問題にぶつかっているので、私は正しく仕事をしていることを確認したい。 –

+0

ちょうどコードに加えた変更を確認してください。 –

+0

こんにちは、ありがとう!私は予期しないトークンエラーに遭遇しているので、不足しているparenや何かを捜す必要がありますが、あなたの助けをありがとう! –

関連する問題