【问题标题】:React onChange from <select> field not firing来自 <select> 字段的反应 onChange 未触发
【发布时间】:2017-10-13 03:02:23
【问题描述】:

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

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>

【问题讨论】:

  • 使用另一个函数将 this.props.updateModal 包装在您的子组件中

标签: javascript reactjs onclick render onchange


【解决方案1】:

我最终重写了它并且它有效。看起来像这样:

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

像这样作为道具传递

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

这样称呼

&lt;select value={this.props.reason} onChange={this.props.handleUpdateChange}&gt;

像魅力一样工作

【讨论】:

  • 如果我把变量和函数名称放在一边,这不是完全像你原来问题中的代码吗?
  • 是的,确实如此。我有一个不同的答案,其中包括将其定义为具有let handleUpdateChange = () =&gt; {...} 之类的自我执行功能,然后允许更改selectvalue,但是在点击提交时它不会保存,所以我改变了经过快速的谷歌搜索后,它完美无瑕。不过你完全正确,我不知道这与我开始时有什么不同......
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2018-12-05
  • 1970-01-01
  • 2021-12-06
  • 2017-09-06
  • 2016-12-04
相关资源
最近更新 更多