2017-01-16 37 views
1

こんにちは私はReactを初めて使う人で、入力フィールドをReactで動的に追加する方法を見つけようとしています。 フォームに動的に別のフィールドを追加するために誰かがonclickをバインドする方法を考え出すのを助けてくれたら、 どのように私はボタンの追加]をクリックすることができますし、redux-formを使用している場合は別のオプション入力はReactJS複数の入力フィールドを動的に追加する

class AddPost extends Component { 
    static contextTypes = { 
      router: React.PropTypes.object 
}; 

    appendInput() { 
     var newInput = `input-${this.state.inputs.length}`; 
     this.setState({ inputs: this.state.inputs.concat([newInput]) }); 
    } 

handleFormSubmit(formProps){ 
this.props.addPost(formProps); 
this.context.router.push('/posts'); 
} 
    render(){ 
     const {handleSubmit,fields:{title,option}} = this.props; 
     return (
      <div className="row top-buffer"> 
      <div className="col md-auto"> 
       <form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}> 
       <fieldset className="form-group"> 
        <label>Question:</label> 
        <input {...title} className="form-control" placeholder="Enter question here"/> 
        {title.touched && title.error && <div className="text-danger">{title.error}</div>} 
        </fieldset> 
       <fieldset className="form-group"> 
        <label>Option:</label> 
        <input {...option} className="form-control" placeholder="Enter option"/> 
        {option.touched && option.error && <div className="text-danger">{option.error}</div>} 
       </fieldset> 
        <fieldset className="form-group"> 
         <label>Option:</label> 
         <input {...option} className="form-control" placeholder="Enter option"/> 
         {option.touched && option.error && <div className="text-danger">{option.error}</div>} 
        </fieldset> 
       <button className="btn btn-success">Add</button> 
       </form> 
       <button onClick={() => this.appendInput() }> 
        CLICK ME TO ADD AN INPUT 
       </button> 
      </div> 
      </div> 
     ); 

    } 

} 

function validate(formProps){ 
const errors = {}; 
if(! formProps.title){ 
errors.title = "Title is required"; 
} 
if(! formProps.option){ 
    errors.body = "Option is required"; 
} 
return errors; 
} 

function mapStateToProps(state){ 
    return { 
    posts:state.post 
    } 
} 

export default reduxForm({ 
form:'post', 
fields:['title','body'], 
validate:validate, 
},mapStateToProps,{addPost})(AddPost); 

答えて

0

をレンダリングします。例をFieldArrayでチェックしてください。

関連する問題