考虑以下文本输入和复选框:
<div>
<div className="field">
<label htmlFor="name">Name: </label>
<input
id="name"
type="text"
onBlur={() => {
console.log("onBlur");
setTimeout(() => {
console.log("onBlur next tick");
});
}}
/>
</div>
<div className="field">
<input
id="toggle"
type="checkbox"
onChange={() => {
console.log("onChange");
}}
/>
<label htmlFor="toggle">Toggle</label>
</div>
</div>
-
关注名称输入
-
单击/点击切换
在Chrome中
console.log
s是:
onBlur
onBlur next tick
onChange
但是,当
simulating mobile devices
,订单更改为:
onBlur
onChange
onBlur next tick
有趣的是,在Firefox中,当模拟移动设备时,顺序没有改变。
为什么Chrome会发生这种订单变化?这有文件记载吗?
Codesandbox
更新:
我刚刚用纯JavaScript重新创建了相同的示例,结果是一样的:
https://jsbin.com/vagoloxebi/edit?html,js,output
这是Chrome中的一个bug吗?