asChild prop とは コンポーネントを使うときに表示される要素を変えたい! 汎用的なコンポーネントを使用する際、以下のような場合にデザインや挙動は変えずに中でレンダリングされる HTML 要素だけ動的に変えたくなることがあります。 ボタンコンポーネントでリンク(<a> 要素、 Next.js や Gatsby などの Link コンポーネント)を表示したい タイトルを持ったセクションコンポーネントで <main> 要素を表示してセマンティックを変えたい フォームコンポーネントで <search> 要素を表示してセマンティックを変えたい 汎用的なヘッドレスコンポーネント(ロジックや挙動のみのコンポーネント)を実装したい 余談: そもそも見た目は変えずに HTML 要素だけ変えるのってアリ? コンポーネントの見た目を変えずに表示される HTML 要素を変えると、ユーザの違和感や混乱を