React has implemented a browser-independent events and DOM system for performance and cross-browser compatibility reasons. We took the opportunity to clean up a few rough edges in browser DOM implementations.
data-*
and aria-*
attributes conform to the specs and should be lower-cased only.style
attribute accepts a JavaScript object with camelCased properties rather than a CSS string. This is consistent with the DOM style
JavaScript property, is more efficient, and prevents XSS security holes.onChange
event behaves as you would expect it to: whenever a form field is changed this event is fired rather than inconsistently on blur. We intentionally break from existing browser behavior because onChange
is a misnomer for its behavior and React relies on this event to react to user input in real time. See Forms for more details.value
and checked
, as well as textarea
. More here.