Vue でのスロット配置と使用状況分析

Vue でのスロット配置と使用状況分析

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DELL G3 コンピュータ。

Vue には主に 3 種類のスロットがあります。

デフォルトスロット、名前付きスロット、スコープ付きスロット

Vue のスロットは、親コンポーネントに提供される子コンポーネントのプレースホルダーを指します。
タグで示されるように、親コンポーネントは HTML、コンポーネントなどの任意のテンプレート コードをこのプレースホルダーに入力することができ、入力されたコンテンツは子コンポーネントのタグを置き換えます (プレースホルダーを置き換えます)。

デフォルトスロット

デフォルト スロットは最も単純なタイプのスロットです。これは、プレースホルダーを置き換えることで親コンポーネント内の子コンポーネントの内容を変更するという上記の説明と一致しています。

文法:

子コンポーネントにプレースホルダーを配置します。

<テンプレート>
    <span>
        <span>サーシャが体重を減らす</span>
        <スロット></スロット>
    </span>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
    名前: 'chassList'
}
</スクリプト>

次に、親コンポーネントでこの子コンポーネントを参照し、プレースホルダーにコンテンツを入力します。

<テンプレート>
    <div>
        <span>今日何を食べるか:</span>
        <シャーシリスト>
            <span>義姉がサーシャに食事を与えてくれない</span>
        </シャーシリスト>
    </div>
</テンプレート>

このとき、ページに表示される内容は「今日何を食べるか:サーシャはダイエット中だが、義理の妹は彼女に食べさせてくれない」となります。

名前付きスロット

たとえば、子コンポーネントにはプレースホルダーを置き換える必要がある場所が 2 つ (2 つのスロット) あります。このとき、親コンポーネントが対応するコンテンツを対応するスロットに埋め込む場合、デフォルトのスロットでは、対応するコンテンツをどのスロットに埋め込むべきかを判断できません。このようなシナリオに対処するために、名前付きスロットが誕生しました。

名前付きスロットは、実際には子コンポーネントのスロットに名前を付けるためのもので、親コンポーネントは子コンポーネントを参照するときに名前に従ってスロットを一致させ、対応するスロットに対応するコンテンツを埋め込むことができます。

文法:

子コンポーネントに 2 つの名前付きスロットを配置します。

<テンプレート>
    <div>
        <span>最初のスロット</span>
        <スロット名="1"></スロット>
        <span>2 番目のスロット</span>
        <スロット名="2"></スロット>
    </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
    名前: 'chassList'
}
</スクリプト>

親コンポーネント内の子コンポーネントを参照し、v-slot:[name] を通じて対応するスロットに対応するコンテンツを入力します。

<テンプレート>
    <div>
        <span>2 つのスロット:</span>
        <シャーシリスト>
            <テンプレート v-slot:one>
                1つ、
            </テンプレート>
            <テンプレート v-slot:two>
                <span>2</span>
            </テンプレート>
        </シャーシリスト>
    </div>
</テンプレート>

このとき、ページに表示される内容は[2つのスロット:最初のスロットが1、2番目のスロットが2]になります。

デフォルトスロットと名前付きスロットの使用に関する注意事項

1. 子コンポーネントに複数のデフォルト スロットがある場合、親コンポーネントのデフォルト スロットに割り当てられたすべての入力内容 (未指定の名前付きスロット) が、子コンポーネントの各デフォルト スロットに入力されます。

2. 親コンポーネントで名前付きスロットの充填順序が乱れた場合でも、名前付きスロットの名前が一致していれば、充填されたコンテンツは対応する名前付きスロットに正しくレンダリングされ、1 つのピットに 1 つのニンジンが与えられます。

3. 子コンポーネントにデフォルト スロットと名前付きスロットの両方が存在するが、親コンポーネントで指定された名前付きスロットが子コンポーネントで見つからない場合、コンテンツはデフォルト スロットに入力されるのではなく、直接破棄されます。

スコープ付きスロット

前述のデフォルト スロットや名前付きスロットと比較すると、スコープ スロットは理解し、使用するのが難しくなります。

  • 最初の 2 つのスロットはフィラーの位置を強調します。
  • スコープ スロットは、データ アクションの [スコープ] を強調します。
  • スコープ付きスロットは、パラメータ (データ) を持つスロットです。

親コンポーネントが使用できるように、パラメータ (データ) を子コンポーネントのスロットに取り込みます。パラメータ (データ) はスロット内でのみ有効です。親コンポーネントは、子コンポーネントから渡されたスロット パラメータ (データ) に基づいて、表示されるコンテンツをカスタマイズできます。

文法:

子コンポーネントにパラメータ (データ) を含むスロットを配置します。

<テンプレート>
    <div>
        <span>スロット内のパラメータ値は</span>
        <スロット :isAllwo="isAllwo"></スロット>
    </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
    名前: 'classList',
    データ() {
        戻る {
            isAllwo: {
                1: '1'、
                2: 「2」
            } 
         }
    }
}
</スクリプト>

親コンポーネント内で子コンポーネントを参照し、 slot-scope を使用して子コンポーネントのスロットから渡されたパラメータを受け入れ、データを使用します。

<テンプレート>
    <div>
        <span>スコープ付きスロット:</span>
        <クラスリスト>
            <テンプレート スロット スコープ="isAllwo">
                {{isAllwo.isAllwo.one}}
            </テンプレート>
        </クラスリスト>
    </div>
</テンプレート>

このとき、ページに表示される内容は「スコープスロット:スロット内のパラメータ値は1つ」となります。

テンプレート内の {{}} は式をサポートしているため、サブコンポーネントから渡されるさまざまなパラメータ値を使用してページ コンテンツをカスタマイズできます。

<テンプレート>
    <div>
        <span>スコープ付きスロット:</span>
        <クラスリスト>
            <テンプレート スロット スコープ="isAllwo">
                {{ isAllwo.isAllwo.one|| '空の値' }}
            </テンプレート>
        </クラスリスト>
    </div>
</テンプレート>

この時、子コンポーネントから渡されたパラメータが null 値の場合、ページの表示内容は [スコープ スロット: スロット内のパラメータ値が null です] となります。

スコープ付きスロットにはさまざまな使用シナリオがあり、さまざまなフレームワークで広く使用されています。たとえば、ElementUI のテーブル内の行または列の表示内容をカスタマイズすることは、スコープ付きスロットの典型的な適用シナリオです。

これで、vue のスロットの構成と使用状況の分析に関するこの記事は終了です。vue のさまざまなタイプのスロットの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Linux学習におけるmkdirコマンドの詳しい説明

>>:  タブバーのいくつかの実装方法(推奨)

推薦する

タグが新しいページを開くかどうかという問題。主要ウェブサイトの開設状況をまとめました

a タグが新しいページを開くかどうか: (1)百度百科事典:ヘッダーが異なる場合は新しいページが開き...

波効果を作成するための CSS のトリック

純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。 波形曲線を実現するにはベ...

MySQL 8.0.23 インストールの超詳細なチュートリアル

目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....

Reactはtodolistの追加、削除、変更、クエリを実装します

目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...

axios でリクエストをキャンセルし、重複リクエストを防ぐ方法について簡単に説明します。

目次序文コア - キャンセルトークン実用的なアプリケーションとパッケージングいくつかの小さな詳細序文...

Windows での MySQL 5.7.20 のインストールと設定方法のグラフィック チュートリアル

参考までにWindowsにMySQLをインストールします。具体的な内容は次のとおりです。 1.まずM...

HTMLページ埋め込み動画とJSコントロール切り替え動画例の詳しい説明

まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...

HTML Webページの例を使用してヘッドエリアコードの意味を説明する

例を使って、Webページのヘッダー情報の意味を理解しましょう。 <!DOCTYPE HTML ...

JS は Baidu 検索ボックスを実装します

この記事の例では、Baidu検索ボックスを実装するためのJSの具体的なコードを参考までに共有していま...

Vue で変数式セレクターを実装する方法

目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...

Workbench を介して MySQL データベースにリモートでアクセスする方法の詳細な説明

序文Workbench が 1 台のコンピューターにインストールされており、別の Ubuntu サー...

MySQL実践ウィンドウ関数SQL分析クラスの生徒のテストの成績と生活費

目次1. 背景2. テーブル作成ステートメントとデータ挿入テーブルを作成するデータの挿入3. ウィン...

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

Nginx 構成の実装 HTTPS セキュリティ認証

1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...

MySQL 8.0.18 のインストールと設定のグラフィックチュートリアル

学習目標: Windowsシステムを使用してMySQLデータベースをインストールする方法を学びます。...