简体   繁体   English

reactjs中的选择框不起作用

[英]select box in reactjs not working

I have a form with a select box that gets data from the server and post it to the same server. 我有一个带有选择框的表单,该选择框从服务器获取数据并将其发布到同一服务器。 I'm using select box from ant design . 我正在使用蚂蚁设计中的选择框。

But that part that handles changes handleChange() is not working and give me this error : 但是处理更改的部分handleChange()无法正常工作,并给我这个错误:

Cannot read property 'value' of undefined 无法读取未定义的属性“值”


This is my code: 这是我的代码:

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>
    )
  }
}

EDITED: Sorry, as you said, it is Ant Design . 编辑:很抱歉,正如您所说,它是Ant Design However, it is almost the same with your handleChange function. 但是,它与handleChange函数几乎相同。 Because it takes the value as the argument, not the event. 因为它将值作为参数,而不是事件。 So that there is no target property inside passed argument. 因此,传递的参数内没有target属性。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM