Vue3 スロットの使用状況の概要

Vue3 スロットの使用状況の概要

1. Vスロットの紹介

v-slot templateまたはコンポーネントでのみ使用できます。それ以外の場合はエラーが報告されます。

v-slotも命令の一つです。

使用例:

//親コンポーネントコード <child-com> 
 <テンプレート v-slot:nameSlot> 
  スロットコンテンツ</template> 
</child-com> 
 
//コンポーネント テンプレート <slot name="nameSlot"></slot> 
v-slot の構文は slot と slot-scope スコープ スロットの機能を簡素化し、より強力で効率的なものにします。

2. 匿名スロット

コンポーネントにスロットが 1 つしかない場合は、 slot name属性を設定せずに、v-slot をパラメータなしで使用できます。ただし、 v-slotは、name 属性が設定されていないスロットに暗黙の「デフォルト」も設定されます。

匿名スロットの使用:

//コンポーネント呼び出し <child-com> 
 <テンプレート v-スロット> 
  スロットコンテンツ</template> 
</child-com> 
 
//コンポーネント テンプレート <slot ></slot> 


v-slotにはパラメータが設定されていませんが、削除することはできません。削除すると、スロットのコンテンツを正常にレンダリングできなくなります。

3. 名前付きスロット

コンポーネント内に複数のスロットがある場合、v-slot 属性値が設定されていないと、デフォルトでは name 属性値のない要素がスロット コンポーネントに挿入されます。指定された位置に該当する要素を配置するには、 v-slotname属性を使用して内容を一致させる必要があります。

名前付きスロットは以下を使用します:

//親コンポーネント <child-com> 
 <テンプレート v-slot:header> 
  ヘッダー</テンプレート> 
 <テンプレート v-slot:body> 
  コンテンツ</template> 
 <テンプレート v-slot:footer> 
  足 
</child-com> 
     
//サブコンポーネント <div> 
 <スロット名="ヘッダー"></スロット> 
 <スロット名="本文"></スロット> 
 <スロット名="フッター"></スロット> 
</div> 


名前付きスロットの略語:

v-bindv-onディレクティブと同様に、 v-slotも略語があります。 v-slot: # に省略できます。

前述のように、v-slot:footer は #footer に短縮できます。

上記の親コンポーネント コードは次のように簡略化できます。

<child-com> 
 <テンプレート #ヘッダー> 
  ヘッダー</テンプレート> 
 <テンプレート #本文> 
  コンテンツ</template> 
 <テンプレート #フッター> 
  足 
</child-com> 


注:他のコマンドと同様に、省略形はパラメータがある場合にのみ許可され、それ以外の場合は無効です。

4. スコープ付きスロット

子コンポーネントでのみ使用可能なデータへのアクセス権をスロット コンテンツに付与すると便利な場合があります。コンポーネントを使用してアイテムの配列をレンダリングし、各アイテムのレンダリング方法をカスタマイズできるようにすることが一般的なケースです。

子コンポーネントのプロパティをスロット コンテンツで使用できるようにするには、 slotにプロパティをバインドする必要があります。次に、v-slot でスロットprops名を受け取って定義します。

使用例:

// 
<child-com> 
 <テンプレート v-slot:header="slotProps"> 
  スロットコンテンツ --{{ slotProps.item }} シリアル番号 --{{ slotProps.index }} 
 </テンプレート> 
</child-com> 
     
//サブコンポーネントコード <テンプレート> 
 <div v-for="(item, index) in arr" :key="index"> 
  <スロット:item="アイテム" name="ヘッダー":index="インデックス"></スロット> 
 </div> 
</テンプレート> 
<スクリプトの設定> 
 定数arr = ['1111', '2222', '3333'] 
</スクリプト> 


5. 動的なスロット名

v-slotディレクティブ パラメータを動的に設定して、動的なスロット名を定義することもできます。

のように:

<child-com> 
 <テンプレートvスロット:[dd()]> 
  動的スロット名</template> 
</child-com> 
 
<スクリプトの設定> 
定数dd = () => { 
  'hre'を返す 
} 


ここでは関数が使用されていますが、変数を直接使用することもできます。

Vue3 スロットの使い方のまとめはこれで終わりです。Vue3 スロットの使い方に関するより詳しい内容は、123WORDPRESS.COM の過去記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue のデフォルト スロット、名前付きスロット、スコープ スロットの定義と使用方法
  • Vue2のスロットの基本的な使用仕様
  • Vue でスロットを使用する方法についての簡単な説明
  • Vueスロットの使用の詳細
  • Vue のスロットの使用法と適用シナリオの詳細な分析
  • vue+element-ui テーブルカプセル化タグラベルスロットの使用
  • Vue でのスロットの使用の概要

<<:  フロントエンドの面接の質問の最も包括的なコレクション

>>:  実行中の時計を実装するための純粋な CSS3 コード

推薦する

React 純粋関数コンポーネント setState がページ更新を更新しない問題の解決方法

目次問題の説明:原因分析:解決:補足: Reactでは、フックが使用されている場合、useState...

CSSの高さの崩壊問題についての簡単な説明

パフォーマンス例えば: HTML: <div class="first"&...

USE DB 輻輳に対する MySQL ソリューションの詳細な説明

障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...

入力タグの名前と値の違い

type はブラウザでの入力と出力に使用されるコントロールです (たとえば、type="t...

SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明

GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...

シンプルな時計を実装するJavaScript

この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...

MySQL は低速クエリを可能にします (EXPLAIN SQL ステートメントの使用の概要)

今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...

印刷広告を成功させるための「3I」基準

国内の多くの広告主にとって、印刷広告の制作と評価は、しばしばかなり主観的です。自分の感情や美的感覚に...

Web フロントエンドのパフォーマンス最適化の詳細説明: リソースのマージと圧縮

2つの目的のためのリソースの結合と圧縮httpリクエストの数を減らす要求されたリソースのサイズを縮小...

VUE と Canvas を使用して Thunder Fighter タイピング ゲームを実装する方法

今日は、サンダーファイタータイピングゲームを実装します。ゲームプレイは非常に簡単です。それぞれの「敵...

ルート変更を監視するJavaScriptの詳細な説明

目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...

MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解

1. ストレージエンジン前のセクションでは、SQL 実行プランは、エグゼキュータ コンポーネントがス...

JSはじゃんけんゲームを実装します

この記事の例では、じゃんけんゲームを実装するためのJSの具体的なコードを参考までに共有しています。具...

MySQLはtruncateコマンドを使用してデータベース内のすべてのテーブルを素早くクリアします

1. まずSELECT文を実行して、すべての切り捨て文を生成します。ステートメント形式: selec...