Laravelでコンポーネントの呼び出しを二通りの方法で行うメモ

2025.05.08

いよいよ自作Webアプリ開発の開発に入っているのだが、コンポーネントの呼び出しで少し時間を取られた。

コンポーネントの呼び出しはHTMLを記述できる方法と、コンポーネントのコードに値(文言)だけを渡して表示する方法の二通りがメジャーらしい。

忘れそうなので、コンポーネントの呼び出しを自分用にメモしておく。

まずはコンポーネントの作成

見出しのコンポーネントを作っておく。


{{-- もし呼び出し側で h1="..." が渡されなかった場合は、$h~ は null(なにもでてこない)もの として扱う --}}
@props(['h1' => null, 'h2' => null])

@if(!empty($h1))
    <h1 class="text-xl font-bold mb-4 border-b border-gray-300 pb-2">
        {{ $h1 }}
    </h1>
@endif

@if(!empty($h2))
    <h2 class="text-xl font-bold mb-4 border-b border-gray-300 pb-2">
        {{ $h2 }}
    </h2>
@endif

呼び出しもと(dashboard.balede.php)からもらった値を表示する。

ちなみに、「@props([‘h1’ => null, ‘h2’ => null])」の部分は②のパターンでのみ使う。

これを呼び出しもとで定義するのだが、二通りのやり方をメモしておく。

①スロットを直接書いて値を渡して表示する方法

HTMLをつけ足すことができるメリットがある。

 {{-- slot(スロット)による値渡し。中身にHTMLを含められる --}}
<x-headings.section-heading>
    <x-slot name="h2">
        お気に入りの掲載(あれば)
    </x-slot>
</x-headings.section-heading>

②propsで値を渡す方法

スロット直書きの短縮形で、かなり完結にかけるので、見出しなどに使える。

{{-- props(属性)によるシンプルな値渡し --}}
<x-headings.section-heading h2="お気に入りの掲載(あれば)" />

propsでの表示は視認性も向上するので、こっちを中心に使っていこうと思う。

PIC UP