2017-10-13 19 views
0

API 호출 후 옵션이로드 된 React Select 양식이 있습니다. 워크샵의 초기 상태 값이 설정되고 옵션이 양식에서 클릭 된 후 업데이트됩니다. 그러나 선택보기를 업데이트하지 않습니다. 또한 양식을 제출하면 워크샵이 성공적으로 데이터베이스에 저장됩니다. 어떻게해야합니까?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

value={ this.state.workshop) }이 줄에서'값 = {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 방법을 사용하여에 의존하는 상황에 대한 컨텍스트를 바인드해야합니다 여기에서 일어나고있는 몇 가지 상황에 맞는 문제 가능성이 있으며,이 컨텍스트 바인딩하는 올바른 형태입니다.

또한, 여기 길 잃은 괄호가 있습니다

+0

예, 바인딩이 이미 완료되었습니다. 길 잃은 paranthesis에 신경 쓰지 마라, 나는 질문을 게시 할 때 그것을 보지 못했다. –