为什么onChange不能在一个特定用例中触发?

时间:2019-12-18 00:13:09

标签: javascript reactjs google-chrome event-handling

在一个小的编辑表单中,我用文本值预填充了Input元素。然后,我使用每个元素的onChange事件监视更改。

我的QA同事刚刚发现的一个奇怪现象是,如果您最初选择了所有文本(即Cmd-A或Ctrl-A),然后按Backspace或Delete,则不会触发onChange事件。

这似乎是浏览器或React中的错误/缺陷吗?

我将通过为每个Input元素添加一个onKeyUp事件处理程序,以寻找Backspace(ASCII 8)或Delete(ASCII 46)代码的方式来解决这个问题。

更新

看来根本原因是我对defaultValue属性的使用,如本例所示:

<Form.Control as='input'
              defaultValue={location}
              placeholder='Enter Location'
              onChange={e => handleChange(e)}

/>

使用此代码,如果遵循上述步骤,onChange事件将不会触发。但是,如果将defaultValue更改为value,则一切正常。

1 个答案:

答案 0 :(得分:0)

我更新了提出问题的问题。

我将不再使用Input元素的defaultValue