在React中,onChange和onInput有什么区别?
我已经尝试过寻找答案,但是大多数都在React的上下文之外,而onChange
在React的上下文中触发模糊。
在执行各种测试时,我似乎无法分辨出这两个事件有什么不同(当应用于文本区域时)。谁能对此有所启发?
回答:
回答:
由于某种原因,React将侦听器附加Component.onChange
到DOM element.oninput
事件。请参阅表单文档中的注释:
有更多的人对此行为感到惊讶。有关更多详细信息,请在React问题跟踪器上参考此问题:
引用关于该问题的评论:
我不明白为什么React选择使onChange像onInput那样表现。据我所知,我们无法恢复旧的onChange行为。Docs声称这是一个“错误用语”,但事实并非如此,它会在发生更改时触发,只是直到输入也失去焦点为止。
为了进行验证,有时我们不希望在输入完毕后显示验证错误。或者,也许我们只是不想在每次击键时都重新渲染。现在唯一的方法是使用onBlur,但现在我们还需要检查该值是否已手动更改。
没什么大不了的,但是在我看来,React抛弃了一个有用的事件,并且在已经有一个事件可以这样做时偏离了标准行为。
我同意100%的评论…但是我想现在更改它会带来比解决方案更多的问题,因为已经编写了很多依赖此行为的代码(并且它也已复制到其他框架,例如Preact)
。
尽管React是基于JS构建的,并且已经获得了巨大的采用率,但是作为一种技术,React存在于其自己的(相当小的)API下隐藏了很多功能。一旦这在事件系统中很明显,那么与标准DOM事件系统根本不同的是,地下发生了很多事情。不仅根据哪个事件执行了什么操作,还根据何时允许数据保留在事件处理的哪个阶段进行。您可以在这里阅读更多有关此的内容:
以上是 在React中,onChange和onInput有什么区别? 的全部内容, 来源链接: utcz.com/qa/412346.html