2016-08-08 8 views
1

上で複数の動的コンポーネントの保存状態こんにちは、私は、このコンポーネントの構造を持っている:ReactJS

<ScheduleApp /> 
    <ScheduleForm /> 
    <TeamField /> 

ScheduleAppScheduleFormと呼ばれるフォームが含まれており、このフォームの下で、私は、ユーザーがチームの数を指定することができるフィールドを持っていると依存番号にTeamFieldの番号が作成されます。

私のフォームは、次のようになります。

enter image description here

そして、私が望んでいたことは、私のScheduleAppコンポーネントの下にすべてのチームの名前を保存することです。他のすべての状態を問題なく保存することができます。例:No. of Teamsフィールドに問題はありませんが、配列内にTeam Nameフィールドを保存する方法については固まっています。

ここではアレイを保存しようとする試みが貧弱ですが、おそらく私がonChangeというイベントを発生させたために私が作ったすべてのキーストロークが保存されているようです。

enter image description here

は、どのように私はこの問題を解決し、ちょうど親コンポーネントの状態の動的コンポーネントを保存すると仮定していますか?

ここで私のコードはjsfiddleですが何らかの理由で私はサイト上で動作させることはできませんが、アクセスを容易にするためにそこに投稿します。

希望しました。どんな助けでも大歓迎です!

答えて

0

変更/キーストロークごとに、テキストボックスの現在の内容を配列にプッシュしています。代わりに、テキストボックス1は配列内の最初のインデックスのみを変更する必要があります。また、テキストボックス2は、配列内の2番目のフィールドのみを変更する必要があります。それぞれの変更について、コンテンツ全体を新しいコンテンツに置き換えます。

よりクリーンなアプローチは、チームオブジェクトを格納することです。また、チーム名を保存できるオン・チェンジ・ハンドラでチーム番号フィールドも送信します。

<input className="form-control" type="text" ref="teamName" 
        onChange={this.handleChange.bind(null, 'team1')} /> // pass any index or string instead of team1 
... 
handleChange(teamIndex, teamName) { 
    let { teams } = this.state; 
    teams[teamIndex] = teamName; 
    this.setState({teams: teams}; 
}   
+0

ヒープありがとう!私はこれについて考えなかった、今私は自分の問題がいかに簡単かを知っている。ちなみに、私は各コ​​ンポーネントで 'キー 'の意味が分かりませんが、インデックスを指定する代わりにそのキーを使用できますか?あなたの例に基づいて 'teamIndex'の代わりに使うことができますか? – JohnnyQ

+1

https://facebook.github.io/react/docs/multiple-components.html#dynamic-childrenこのリンクを見てキータグが必要な理由を確認してください。キーに割り当てるのと同じ値を使用できます。 –