触发回调的实际浏览器事件作为React事件的
HTML中这样的函数只有在将焦点从输入字段中移出时才能工作:
<input onchange="changeInput()" type="text"></input>
但在React中,具有受控输入的onChange
即使不会失去焦点也会触发:
<input value={this.state.textVal} onChange={this.changeInput} type="text"></input>
这是因为合成事件还是其他原因?我在任何地方都找不到确切的答案。
nativeEvent
属性传递。通过将console.log
作为回调传递给input
元素的onChange
,我们可以看到本机事件的类型是'input'
。
可以使用JavaScriptaddEventListener
方法复制此行为:
const setValue = ({ target }) => {
document.getElementById("myresult").innerHTML = target.value;
}
document.getElementById("myinput").addEventListener("input", setValue);
<input type="text" id="myinput">
<p id="myresult"></p>