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 if 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 we've been covering for the past 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 to the handlers. If a match is found, it calls the handler. Finally, when the React component is removed,...