正解はPortalです。ReactDOM.createPortal(child, container)を使用して、モーダルやツールチップなどをbody直下などにレンダリングできます。イベントの伝播はReactツリーに従うため、通常のコンポーネントと同じように動作します。