请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

input的onChange事件

原生javascript里input的onchange要等到其失去焦点时才能触发,而react里的onChange事件不需要,为啥呢,是不是它其实绑定的是onkeydown事件?

正在回答 回答被采纳积分+3

3回答

Parry 2017-03-07 05:54:38

不需要等到 onchange 啊,因为 react 的 state 的变更就已经引起了页面组件的变更了。课程前面就提到这个问题了,才抛出这个问题让大家思考啊。

1 回复 有任何疑惑可以回复我~
  • 提问者 慕用8116058 #1
    老师,我的意思是这里的onChange被触发的条件,原生input的onchange事件是需要onblur才触发,而input组件是只要改变输入就触发,这是怎么做到的。您说的是onchange触发后会修改state,然后引起组件重新渲染
    回复 有任何疑惑可以回复我~ 2017-03-07 09:07:46
  • Parry 回复 提问者 慕用8116058 #2
    课程里不是解释了,输入改变的时候 state 就改变了。为什么要 onchange 触发后才修改 state?
    回复 有任何疑惑可以回复我~ 2017-03-07 13:19:00
  • 提问者 慕用8116058 回复 Parry #3
    老师,<input onChange={this.handleChange} /> 这里的this.handleChange这个函数本身每次在用户输入操作的时候都会被调用,而原生的input的onchange事件处理函数用户输入操作不会被触发,需要等到input元素失去焦点才能触发onchange事件。我的疑问是input组件的onChange是怎么绑定事件处理函数的,不是事件处理函数被调用后,通过setState()修改state后触发组件的update操作。
    回复 有任何疑惑可以回复我~ 2017-03-07 13:45:33
Parry 2017-03-07 13:19:33

你说的是通过 this 调用 mixin 中事件的问题吧?

0 回复 有任何疑惑可以回复我~
Parry 2017-03-06 20:25:03

课程里我讲到这个问题了。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕用8116058 #1
    是啊,我看到这个才问的,还有老师你讲mixin部分的时候调用了MixinLog.log()方法,我觉得您这样调用即使没有mixin进去,也一样可以调用,因为您直接通过MixinLog对象调用的嘛
    回复 有任何疑惑可以回复我~ 2017-03-06 20:38:44
  • 提问者 慕用8116058 #2
    老师,前面的问题您课程里没有答案哦
    回复 有任何疑惑可以回复我~ 2017-03-06 20:40:58
  • Parry 回复 提问者 慕用8116058 #3
    什么叫 没有mixin进去?
    回复 有任何疑惑可以回复我~ 2017-03-07 05:55:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信