2017-08-20 9 views
0

私はすべてのボタンclick.But上のコンポーネントをレンダリングする反応のアプリケーションを作成するが、私は一度だけそれを行うことができます。ボタンをクリックするたびに反応コンポーネントをレンダリングする方法は?

ここ
class AddForm extends React.Component{ 
constructor(props){ 
    super(props); 
    this.state={ 
    anotherForm:false, 
    } 
    this.newForm=this.newForm.bind(this); 
} 
newForm(){ 
    this.setState({ 
    anotherForm:true 
    }) 
} 
render(){ 
return(
    <div> 
    <button onClick={this.newForm}>AddForm</button> 
    <EducationDetails/> 
    {this.state.anotherForm?<EducationDetails/>:null} 
    </div> 
) 
} 
} 

コンポーネントEducationDetailsはAddFormボタンが、私はそれを把握することができませんでしたclicked.Butされるたびにレンダリングされます。ここで

+0

を削除するには、別のボタンを追加し、

removeClick(){ this.setState({count: this.state.count - 1}) } 

のようなあなたのカウント何かをデクリメントそして、ちょうどあなたのより多くのボタンを追加するの下で同じ概念を使用してフォームを削除することができ

class AddForm extends React.Component { constructor(props) { super(props); this.state = {value: [], count: 1}; //initial you'll have one form } addMore(){ this.setState({count: this.state.count+1})//on click add more forms } displayForm(){ let forms = []; for(let i = 0; i < this.state.count; i++){ forms.push( <div key={i}> <EducationDetails value={this.state.value[i] || ''} /> </div> ) } return forms || null; } render() { return ( <form > {this.displayForm()} <input type='button' value='add more' onClick={this.addMore.bind(this)}/> </form> ); } } ReactDOM.render(<AddForm />, document.getElementById('container')); 

はあなたを行いますクリックして別のフォームを追加するか、同じ要素を再レンダリングしますか? – abdul

+0

コンポーネント「EducationDetails」にある別のフォームをクリックして追加したい – Candy

答えて

0

は作業jsfiddle

これはあなたの教育詳細コンポーネントであると仮定しますです。あなたのAddFormコンポーネントで

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

     render() { 
     return (<div> 
      <p>FirstName: <input type="text" value={this.props.value || ''} /></p> 
       <p>LastName: <input type="text" value={this.props.value || ''} /></p> 
       </div> 
     ); 
     } 
    } 

、あなたは数といつでもあなたのカウント状態に基づいて、カウントして表示教育の詳細フォームをインクリメント以上の追加]ボタンをクリックしますを持つことができます。あなたはまた、

<input type='button' value='remove' onClick={this.removeClick.bind(this)}/> 
+0

これは、1回のボタンクリックですべてのフォームを送信できる方法ですか?現在、新しく追加されたフォームごとにボタンを送信しています。 – Candy