Event delegation — single listener on root.
1function List({ items }) {2 return (3 <ul>4 {items.map(item => (5 <li key={item.id} onClick={() => handleClick(item)}>6 {item.name}7 </li>8 ))}9 </ul>10 );11}
Benefits: Fewer event listeners, better memory usage, dynamic lists work without cleanup, cross-browser consistency.
SyntheticEvent: Wraps native events, consistent API across browsers, pooling removed in React 17+.