反应onChange从
我有父和子组件。我的子组件包含一个带有一些选项的选择字段,这些应该在点击时更新父项的状态(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>
我最终重新写它,它的工作原理。看起来是这样的:
handleUpdateChange(e) {
this.setState({
reason: e.target.value
})
}
通过道具,像这样
handleUpdateChange={this.handleUpdateChange.bind(this)}
这样调用
<select value={this.props.reason} onChange={this.props.handleUpdateChange}>
就像一个魅力
如果我把变量和函数名放在一边,是不是* *就像原始问题中的代码一样? – Jaxx
是的,它实际上是。我有一个不同的答案,其中包括将它定义为一个类似'let handleUpdateChange =()=> {...}'的自执行函数,然后允许'select'的'value'被更改,但它在提交时不会保存,因此我在快速谷歌搜索后将其更改为此,并且完美无瑕。尽管你是完全正确的,但我不知道这与我刚开始的有何不同。 –
包装this.props.updateModal在你的孩子部分与另一个福 – Sri