2017-10-13 3 views
0

Ich habe Parent und Child-Komponenten. Meine Kindkomponente enthält ein Auswahlfeld mit einigen Optionen, die den Zustand des Elternelements beim Klicken (onChange) aktualisieren sollten, dies jedoch nicht tun. Ich warf einen Debugger in die Funktion, die ausgeführt werden sollte, wenn die onChange() auftritt, aber es trifft es nie. Wo gehe ich hier falsch?Reagieren onChange von <select> Feld nicht feuern

Parent Component Function

updateModal(evt) { 
    this.setState({ reason: evt.target.value}) 
} 

als Stütze bestanden wie folgt:

<PastSessions 
    updateModal={this.updateModal.bind(this)} 
/> 

Und dann ist hier mein Child Component mit dem Auswahlfeld.

<select value={this.props.reason} onChange={this.props.updateModal}> 
    <option value='One'>One</option> 
    <option value='Two'>Two</option> 
    <option value='Three'>Three</option> 
</select> 
+0

Wrap this.props.updateModal in Ihrer Kindkomponente mit einem anderen Fu nction – Sri

Antwort

0

Ich landete neu schreiben und es funktioniert. Sieht wie folgt aus:

handleUpdateChange(e) { 
    this.setState({ 
     reason: e.target.value 
    }) 
    } 

als Requisiten bestanden wie so

handleUpdateChange={this.handleUpdateChange.bind(this)}

ähnliche

genannt

<select value={this.props.reason} onChange={this.props.handleUpdateChange}>

Arbeiten wie ein Charme

+1

Wenn ich Variablen- und Funktionsnamen beiseite lege, ist das nicht genau * wie der Code in deiner ursprünglichen Frage? – Jaxx

+0

Ja, es ist tatsächlich. Ich hatte eine andere Antwort, die beinhaltete, es als eine sich selbst überwachende Funktion mit etwas wie 'let handleUpdateChange =() => {...}' zu definieren und dann erlaubte, dass der 'Wert' von' select' verändert wurde, aber es Ich würde nicht speichern, wenn ich "submit" drücke, also habe ich das nach einer schnellen Google-Suche geändert und es ist fehlerlos. Du hast vollkommen recht, ich weiß nicht, wie das anders ist als das, womit ich angefangen habe ... –

Verwandte Themen