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 コード

推薦する

Vueプロジェクトが完了した後にプロジェクトを最適化する方法の例

目次1. 開発モードとリリースモードに異なるパッケージエントリポイントを指定する2. 外部CDNリソ...

Node.jsはexpress-fileuploadミドルウェアを使用してファイルをアップロードします

目次プロジェクトを初期化するサーバーの作成クライアントを初期化するコンポーネントの記述ファイルアップ...

Linux環境変数ファイルの簡単な紹介

Linux システムでは、環境変数は適用範囲に応じて、システムレベルの環境変数とユーザーレベルの環境...

Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerでdocker search centosを使用する場合docker pull dock...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

Vueのウェブページスクリーンショット機能の詳しい説明

最近、プロジェクトで写真をアップロードする要件があるのですが、顧客がアップロードする写真のサイズがま...

JavaScript における一般的な配列操作

目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

CSS3 を使用して入力複数選択ボックスのスタイルをカスタマイズする例

原則: まず入力要素を非表示にし、次に CSS を使用してラベル要素のスタイルを設定します (他の要...

数十億のデータに対するMySQLページングの最適化に関する簡単な説明

目次背景分析するデータシミュレーション1. 従業員テーブルと部門テーブルの2つのテーブルを作成します...

JSはオンラインでのアナウンスのスクロール効果を実現します

この記事では、オンラインアナウンスのスクロール効果を実現するためのJSの具体的なコードを参考までに共...

HTMLは無効なテーブル幅設定の問題を解決します

テーブルに table-layer:fixed スタイルを設定し、テーブル内の行が結合されていること...

CSS3 で背景ぼかしを実現する 3 つの方法 (要約)

1. 通常の背景ぼかしコード: <スタイル> html, 体 { 幅: 100%; 高...

Linux での MySQL のインストールに関する詳細なチュートリアル

1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...