在reactjs中选择框不起作用

时间:2016-12-25 09:29:21

标签: javascript ajax reactjs

我有一个带有选择框的表单,该表从服务器获取数据并将其发布到同一服务器。我正在使用ant design中的选择框。

但处理更改handleChange()的那部分无法正常工作并给我这个错误:

  

无法读取未定义的属性“值”


这是我的代码:

let optionData = [];

class ContentCountries extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      value: 'Select',
      jsonData: 0
    };
  }
  handleChange(event) {
    this.setState({value: event.target.value});
  }
  handleSubmit(event) {
    event.preventDefault();
    var data = {
      name: this.state.value
    }
   console.log(data);
    /*$.ajax({
      type: 'POST',
      url: 'https://google.com',
      data: data
    })*/
  }
  componentDidMount(){
    //ajax request
    /*$.ajax({
      type: 'GET',
      url: 'https://google.com',
      succes: function(data){
        optionData = data;
      }
    })*/
    //static example
    optionData.push('Bangalore');
    optionData.push('Pune');
    this.setState({jsonData: 1});//change the status so the select tag will get the new values(render will happen)
  }
  render() {
    var optionsTag = <Option value="">Select City</Option>  
   if(optionData.length){
     optionsTag = optionData.map((data,index) => {
                          return <Option value={data} key={index}>{data}</Option>
                          })
   }

    return (
   <form onSubmit={false}>
        <label>
          Please select city:
          <Select value={this.state.value} onChange={this.handleChange.bind(this)}>
            { optionsTag}
          </Select>
        </label>
        <input type="button" onClick={this.handleSubmit.bind(this)} value="Submit" />
      </form>
    )
  }
}

1 个答案:

答案 0 :(得分:3)

编辑:对不起,正如你所说,它是Ant Design。但是,它与handleChange函数几乎相同。 因为它将值作为参数,而不是事件。因此传递参数内没有target属性。

&#13;
&#13;
handleChange(val) {
    this.setState({value: val});
  }
&#13;
&#13;
&#13;