2017-10-13 30 views
0

我有一个React Select表单,其中有API选项调用后加载的选项。车间的初始状态值已设置,并在表单中单击选项后更新。但是,选择的视图不会更新。而且,提交表格时,研讨会已成功保存到数据库中。我该怎么办 ?React Select单击选项时不会更新值

renderForm() { 
    return (
     <section className="col-md-12 col-sm-12"> 
      <form className="col-md-12 col-sm-12" 
        onSubmit={ this.handleSubmit }> 
       // other form-groups 
       <div className="form-group"> 
        <label> 
         Region: 
         <input className="form-control" 
           type="text" 
           value={ this.state.value } 
           onChange={ this.handleRegionChange } required /> 
        </label> 
       </div> 
       <div className="form-group"> 
        <label> 
         Workshop: 
        </label> 
        <Select name="form-field-workshop" 
          value={ this.state.workshop } 
          onChange={ this.handleWorkshopChange } 
          options={ this.renderFormWorkshops() } 
          clearable={ false } 
          searchable={ false } 
          required /> 
       </div> 
       <input className="btn btn-default" 
         type="submit" 
         value="Submit" /> 
      </form> 
     </section> 
    ); 
} 

// handles the change of state when an option is selected 
handleWorkshopChange(value) { 
    this.setState({ 
     workshop: value.label 
    }); 
} 

// displays the options in the Select form 
renderFormWorkshops() { 
    return _.map(this.props.workshops.workshops, (it) => { 
     return (
      { value: it.id, label: it.name } 
     ); 
    }); 
} 
+0

从该行中删除托架'值= {this.state.workshop)}'。应该是'value = {this.state.workshop}' –

回答

1
handleWorkshopChange(value) { 
    this.setState({ 
     workshop: value.value 
    }); 
} 
+0

它更新视图,但它保存了ID。进入数据库。我会从那里处理。非常感谢 :) –

0

你有没有在你的构造函数中正确设置它?有可能发生在这里的一些方面的问题,这是结合上下文正确的形式:

constructor(props) { 
    super(props); 

    this.handleWorkshopChange = this.handleWorkshopChange.bind(this); 
} 

如果你不使用箭头功能,你需要绑定上下文依赖于使用this方法的情况。

此外,你必须杂散括号这里:value={ this.state.workshop) }

+0

是的,绑定已经完成了。不要介意流浪的偏见,在发布问题时我没有看到它。 –

相关问题