VueJSのslotを紹介

この記事を書いたチーム:frontier
VueJSのslotを紹介 株式会社Smallit 技術ブログ

はじめに 

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

VueJS アプリケーションでは、コンポーネントの多くに共有 UI 要素がある状況に遭遇したことがあるはずです。Slotは反復的なコードの作成を制限するために作成されました。

Web サイト 多数のページで構成されており、各ページには同じヘッダーとサイドバーがあり、コンテンツのみが変更されるとします。 そこから、最初の2つのコンポーネント、<Header /> と <Sidebar />を作成します。 

サイトの各ページで上記のようにフレームをコピーして、コンテンツのみを変更すると、ソースがこのような形になります。 

このコード重複の問題を解決するには、VueJS が提供するslotを使用します。  

 使い方 

まず、次のように <PageLayout /> というコンポーネントを定義します。 

ここで、 <slot /> セクションは空のボックスとして機能し、そこに任意のタイプのインターフェイスを配置できます。具体的には、次のような特定のページのコンテンツがここに追加します。 

<PageLayout> と </PageLayout> の間のコードは、<PageLayout /> コンポーネントの <slot/> を宣言した位置に自動的に配置されます。 さらに、 <PageLayout /> コンポーネントでは、デフォルト値を設定することもできます。 

コンテンツを何も追加せずに上記の <PageLayout /> コンポーネントを使用すると、定義したデフォルトのコンテンツが自動的に使用されます。これがテキストの「Default content」です。 

複数のslotがある場合は、nameで区別できます。 

使用する時、そのコンポーネント モデルをこのように呼びます。 

前述の v-slot の使用に加えて、VueJS はより簡潔な記述方法も提供します。これは、単語 v-slot を # 文字で置き換えることです。 

さらに、slotのロジックを再利用できます。 

 

それでは、以上です。 
最後までご覧いただきありがとうございました。 

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス