2017-01-16 71 views
1

您好,我是React新手,在試圖弄清楚如何動態地添加輸入字段與React時迷失了方向。 如果有人可以幫助我解決如何綁定onclick動態添加另一個字段到窗體。 如何如果您正在使用redux-form我,單擊Add按鈕,另一選項輸入將使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的例子,這應該有所幫助。