【发布时间】:2019-02-24 01:13:04
【问题描述】:
在处理onChange 事件时,这个可以工作:
<input type="file" onChange={this.onChange}
不是这个,即刻执行函数:
<input type="file" onChange={this.onChange()}
不是另一个,不执行:
<input type="file" onChange={() => this.onChange}
但是这个可以:
<input type="file" onChange={() => this.onChange()}
但是,当第一个自动发送 event 对象时,第二个需要显式发送它:
<input type="file" onChange={(e) => this.onChange(e)}
onChange(e) {
console.log(e.target.files[0])
}
这是为什么呢?我们什么时候应该使用其中一个?
【问题讨论】:
-
尝试添加
console.log(this),看看两种工作方式的区别 -
我没提但是绑定了:this.onChange = this.onChange.bind(this)
-
在这种情况下,额外的箭头函数包装是完全多余的,不应该使用。
-
参见
bind、stackoverflow.com/questions/43600967/…。这适用于 React 的程度低于通用 OOP,但通常bind更可取。
标签: reactjs forms ecmascript-6 dom-events arrow-functions