<input type="file" onChange={this.onChange}
Это работает, потому что onChange
prop - это функция, тогда вы передаете ссылку на функцию, и она работает.И <input>
отвечает за передачу ему параметра события.
<input type="file" onChange={this.onChange()}
Это не работает, потому что вы присваиваете onChange
значение результата функции onChange.(Но в зависимости от вашей функции это может работать)
<input type="file" onChange={() => this.onChange}
Это также не работает, потому что вы создаете новую функцию, а внутри нее вы используете ссылку на функцию this.onChange
вы не выполняете его (с круглыми скобками).
<input type="file" onChange={() => this.onChange()}
Это выполняет функцию (вы вызываете this.onChange()
) внутри вашей анонимной функции, но вы не передаете ей параметры,так как вы ожидаете получить информацию о событии внутри функции this.onChange
?
<input type="file" onChange={(e) => this.onChange(e)}
onChange(e) {
console.log(e.target.files[0])
}
Это решает мою предыдущую мысль: теперь в вашей анонимной функции вы получаете информацию о событии e
, и выпередавая его вашей функции onChange
.Тогда это работает.