映射json对象并将第一个object.value设置为state

时间:2017-05-30 15:47:06

标签: reactjs

我目前的代码是这样的:

    renderDiagnosisCodeValue(){
    return _.map(this.state.diagnosisData && this.state.diagnosisData, diagnosisValues => {
      this.setState({
        diagnosisReturnedValue: diagnosisValues[0].diagnosisCode
      })
      return(
        <option key={diagnosisValues.id} value={diagnosisValues.diagnosisCode}>{diagnosisValues.diagnosisName}</option>
      )
    });
  }

但它还给我Uncaught (in promise) TypeError: Cannot read property 'diagnosisCode' of undefined

我想这样做的原因是因为我想将我的初始状态设置为第一个object.value。这个<option>位于onChange事件的<select>听证会内,但如果用户决定选择第一个选项而不触发onChange处理程序,则该值将为空,这就是为什么我需要设置它作为初始状态。

1 个答案:

答案 0 :(得分:1)

您无法在render方法中调用setState。您应该做的是在获取数据后设置初始状态。因此,您应该将this.setState移至componentDidMount或获取初始数据的任何位置。

或者真正的肮脏方法是:

this.setState({
    diagnosisReturnedValue: this.state.diagnosisData[0].diagnosisValues[0].diagnosisCode
})