LoginSignup
5
1

Vue.js の Slot は、コンポーネントのテンプレート内で、他のコンポーネントのコンテンツを挿入するための場所を提供する強力な機能です。これにより、コンポーネントの構造を柔軟にカスタマイズし、異なるコンテンツを組み合わせて使用することができます。Slot を活用することで、再利用可能なコンポーネントを作成し、アプリケーションの開発効率を向上させることができます。

1. Slot の基本

Slot は、コンポーネントのテンプレート内で <slot> タグを使用して定義されます。<slot> タグは、他のコンポーネントからコンテンツが挿入される場所を示します。

<template>
  <div>
    <slot/>
  </div>
</template>

この例では、<div> 要素内に <slot> タグが定義されています。この <slot> には、他のコンポーネントからコンテンツが挿入されます。

2. Slot の使用

Slot を使用するには、親コンポーネントで子コンポーネントの <slot> にコンテンツを挿入します。

<template>
  <HelloWorldComponent>
    <p>こんにちは、世界!</p>
  </HelloWorldComponent>
</template>

この例では、HelloWorldComponent コンポーネントの <slot><p> 要素が挿入されています。HelloWorldComponent のテンプレートで定義された <slot> は、<p> 要素のコンテンツで置き換えられます。

スクリーンショット 2024-06-18 21.40.24.png
検証ツールで確認してみても置き換えられていますね!

3. 名前付き Slot

Slot に名前を付けることで、複数の異なるコンテンツを挿入することができます。

<template>
  <div>
    <slot name="header"></slot>
    <slot name="content"></slot>
    <slot name="footer"></slot>
  </div>
</template>

この例では、headercontentfooter という名前の Slot が定義されています。

<template>
  <HelloWorldComponent>
    <template v-slot:header>
      <h1>タイトル</h1>
    </template>
    <template v-slot:content>
      <p>コンテンツ</p>
    </template>
    <template v-slot:footer>
      <p>フッター</p>
    </template>
  </HelloWorldComponent>
</template>

この例では、HelloWorldComponent コンポーネントの headercontentfooter の各 Slot に異なるコンテンツが挿入されています。v-slot ディレクティブを使用して、Slot の名前とコンテンツを指定します。

4. Slot のメリット

  • 柔軟性: Slot を使用することで、コンポーネントの構造を柔軟にカスタマイズできます
  • 再利用性: Slot を使用することで、コンポーネントを再利用し、異なるコンテンツを組み合わせて使用することができます
  • 可読性: Slot を使用することで、コードをより明確で読みやすくすることができます

まとめ

Slot機能を初めて使用した際は理解に苦しみましたが、こうやって自分の中でまとめてみるとシンプルにしていたんだと改めて感じました。
色々なプロジェクトで色々な使用方法があるため復習して応用できたら効率的に開発ができると感じました。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1