2017-10-13 3 views
0

J'ai des composants parent et enfant. Mon composant enfant héberge un champ select avec quelques options et celles-ci devraient mettre à jour l'état du Parent quand on clique dessus (onChange), mais ce n'est pas le cas. J'ai jeté dans un débogueur dans la fonction qui devrait être en cours d'exécution lorsque le onChange() se produit, mais il ne le touche jamais. Où vais-je me tromper ici?Réagir surChanger de <select> champ ne se déclenche pas

Parent Component Function

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

Passed comme un accessoire comme ceci:

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

Et puis voici mon Child Component avec le champ de sélection.

<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 dans votre composant enfant avec un autre fu nction – Sri

Répondre

0

J'ai fini par le réécrire et ça marche. On dirait ceci:

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

passé comme des accessoires comme si

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

appelé comme cette

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

fonctionne comme un charme

+1

Si je mets de côté les noms de variables et de fonctions, n'est-ce pas * exactement * comme le code de votre question initiale? – Jaxx

+0

Oui, c'est en fait. J'ai eu une réponse différente qui incluait le définir comme une fonction auto exectuing avec quelque chose comme 'let handleUpdateChange =() => {...}' et ensuite cela permettait de changer la valeur de 'select', mais ne serait pas enregistrer lors de la soumission de soumettre, donc je l'ai changé à cela après une recherche rapide google et c'est sans faille. Vous avez tout à fait raison, je ne sais pas comment c'est différent de ce que j'ai commencé avec ... –