反应onChange从<select>字段不发射

问题描述:

我有父和子组件。我的子组件包含一个带有一些选项的选择字段,这些应该在点击时更新父项的状态(onChange),但它们不会。我把一个调试器投入到应该在onChange()发生时应该运行的函数中,但它从来没有碰到它。我在哪里错了?反应onChange从<select>字段不发射

Parent Component Function

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

传递的道具,像这样:

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

然后这里是我Child Component与选择栏。

<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

包装this.props.updateModal在你的孩子部分与另一个福 – Sri

我最终重新写它,它的工作原理。看起来是这样的:

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

通过道具,像这样

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

这样调用

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

就像一个魅力

+1

如果我把变量和函数名放在一边,是不是* *就像原始问题中的代码一样? – Jaxx

+0

是的,它实际上是。我有一个不同的答案,其中包括将它定义为一个类似'let handleUpdateChange =()=> {...}'的自执行函数,然后允许'select'的'value'被更改,但它在提交时不会保存,因此我在快速谷歌搜索后将其更改为此,并且完美无瑕。尽管你是完全正确的,但我不知道这与我刚开始的有何不同。 –