Binding handlers to elements
When you assign an event handler function to an element in JSX, React doesn't actually attach an event listener to the underlying DOM element. Instead, it adds the function to an internal mapping of functions. There's a single event listener on the document for the page. As events bubble up through the DOM tree to the document, the React handler checks to see whether any components have matching handlers. The process is illustrated here:
Why does React go to all of this trouble, you might ask? It's the same principle that I've been covering in the last few chapters – keep the declarative UI structures separated from the DOM as much as possible.
For example, when a new component is rendered, its event handler functions are simply added to the internal mapping maintained by React. When an event is triggered and it hits the document object, React maps the event...