React Compound Componentパターンの使いどころ
CRANK
はじめにReactで複雑なUIコンポーネント(Select、Tabs、Accordion、Modalなど)を作成する際、大量のpropsを渡す「Props地獄」に陥ることがあります。<Select options={options} value={value} onChange={setValue} placeholder="選択してください" renderOption={(option) => <CustomOption {...option} />} renderHeader={(selected) => <Header selected={selected} />} onOpen={() => {}} onClose={() => {}} /> このようなAPIは認知負荷が高く、想定外のカスタマイズが困難です。Compound Componentパターンは、親コンポーネントが暗黙的な状態を管理し、子コンポーネントがその状態をContext経由で共有する手法です。HTMLの<select>と<option>の関係に似ています。本記事では、Compound Componentパターンの構造と適用判断基準を解説し、Radix UIでの実践的な実装についても考察します。第1章:このパターンが解決する問題Props地獄(Prop Soup)複雑なコンポーネントを作ると、大量のpropsが必要になる問題があります:カスタムレンダリング用のpropsイベントハンドラ用のprops表示制御用のpropsこれらが積み重なると、以下の問題が生じます。1.…