2016-12-25 4 views
1

Ich habe ein Formular mit Auswahlfeld, die Daten vom Server abrufen und es mit ant-Design auf Server veröffentlichen.Auswahlfeld in reactjs funktioniert nicht

aber ich habe ein Problem, die Veränderungen umgehen nicht funktioniert und gots mir einen Fehler: nicht Eigenschaft ‚Wert‘ lesen undefinierten

dies ist mein 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> 
    ) 
    } 
} 
+0

Verwenden Sie benutzerdefinierte 'Option' und' Select' Komponenten, die hier nicht gezeigt werden? Wenn nicht, sollten normale HTML-Elemente Kleinbuchstaben sein. Wenn Sie eine benutzerdefinierte 'Select'-Komponente verwenden, müssen Sie ihre Dokumentation prüfen, um zu sehen, was sie mit einem' OnChange'-Callback macht. –

+0

ja ich benutze custome wählen und option von ant design https://ant.design/components/form/ aber es hat nichts onChange-Methode @JonnyBuchanan – leman17

Antwort

2

EDITED: Sorry, als Du hast gesagt, es ist Ant Design. Es ist jedoch fast dasselbe mit Ihrer handleChange Funktion. Weil es den Wert als Argument, nicht das Ereignis nimmt. Damit gibt es keine target Eigenschaft innerhalb des übergebenen Arguments.

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

+0

ja ... dass es .. vielen Dank – leman17

Verwandte Themen