Parece que no hay diferencia real
React, por alguna razón, adjunta oyentes Component.onChange
al element.oninput
evento DOM . Vea la nota en los documentos sobre formularios:
React docs - Formularios
Hay más personas a las que les sorprende este comportamiento. Para obtener más detalles, consulte este problema en el rastreador de problemas de React:
Documente cómo el onChange de React se relaciona con onInput # 3964
Cita de los comentarios sobre ese tema:
No entiendo por qué React eligió hacer que onChange se comporte como lo hace onInput. Por lo que puedo decir, no tenemos forma de recuperar el antiguo comportamiento de onChange. Los médicos afirman que es un "nombre inapropiado", pero no lo es realmente, se activa cuando hay un cambio, pero no hasta que la entrada también pierde el foco.
Para la validación, a veces no queremos mostrar errores de validación hasta que hayan terminado de escribir. O tal vez simplemente no queremos volver a renderizar con cada pulsación de tecla. Ahora, la única forma de hacerlo es con onBlur, pero ahora también debemos verificar que el valor haya cambiado manualmente.
No es un gran problema, pero me parece que React descartó un evento útil y se desvió del comportamiento estándar cuando ya había un evento que lo hacía.
Estoy 100% de acuerdo con el comentario ... Pero supongo que cambiarlo ahora traerá más problemas de los que resuelve, ya que se había escrito tanto código que se basa en este comportamiento.
React no es parte de la colección oficial de API web
A pesar de que React está construido sobre JS y ha visto una gran tasa de adopción, como tecnología, React existe para ocultar una gran cantidad de funcionalidades bajo su propia API (bastante pequeña). Una vez que el área donde esto es obvio es en el sistema de eventos, donde están sucediendo muchas cosas bajo la superficie que en realidad son radicalmente diferentes del sistema de eventos DOM estándar. No solo en términos de qué eventos hacen qué, sino también en términos de cuándo se permite que los datos persistan en qué etapa del manejo de eventos. Puedes leer mas al respecto aquí:
React Event System