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 through 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. The DOM is merely a render target; React’s architecture allows it to remain agnostic about the final rendering destination and event system.
For example, when a new component is rendered, its event handler functions are simply...