React 受控组件里 onChange 和 onInput 到底该用哪个?
在 React 里处理表单输入时,onChange 的表现和原生 DOM 的 change 事件完全不是一回事。原生的 change 通常要等到输入框失去焦点才触发,而 React 为了保持数据同步,把 onChange 包装成了类似 input 事件的行为,每次敲键盘都会调用。但如果你在受控组件里直接写 onInput,会发现它也能触发,而且拿到的 event 对象、执行顺序、与 setState 的配合方式又和 onChange 有细微差别。不少人在做输入格式化、实时校验、中文输入法组合输入时踩过坑:光标跳动、组合输入被截断、受控值更新滞后一帧。这篇文章从 React 合成事件和原生事件的...