Vue の匿名スロットと名前付きスロットの詳細な説明

Vue の匿名スロットと名前付きスロットの詳細な説明

スロット (slot) は、Vue のコンテンツ配布メカニズムです。コンポーネント内のテンプレート エンジンは、配布されたコンテンツを運ぶための出口としてスロット要素を使用します。

スロットは子コンポーネントのテンプレート タグ要素であり、このタグ要素が表示されるかどうか、またどのように表示されるかは親コンポーネントによって決定されます。

スロットは、デフォルト スロット、名前付きスロット、スコープ スロットの 3 つのカテゴリに分けられます。 (ここでは最初の 2 つについてお話します)

スロットの本質は、スロットは本質的にサブコンポーネントの拡張であり、コンテンツは <slot> スロットを通じてコン​​ポーネント内の「指定された場所」に配信されることです。

1. 匿名スロット

デフォルト スロット: 匿名スロットとも呼ばれ、スロットで名前属性値が指定されていない場合のデフォルトの表示スロットです。コンポーネントには匿名スロットが 1 つだけあります。

例:

まずVueインスタンスを作成し、idがappのdivにマウントします。

<div id="アプリ">
 
    </div>
 
    <script src="./js/vue.js"></script>
    <スクリプト>
 
        // ルート コンポーネント (親コンポーネント、ベース コンポーネントとも呼ばれる)
        vm = new Vue({
            el:'#app',
        })
    </スクリプト>

ローカル コンポーネントを作成するときは、コンポーネント内のスロットを定義します。スロットは子コンポーネントに配置する必要があります。

 // ローカルコンポーネントを宣言する let child = {
            テンプレート:`
            <div>
                <p>私はサブコンポーネントです</p>
                <p>私は言葉の列です</p>
                <slot>これはプレースホルダーです</slot>
            </div>
            `
        }

VMインスタンスのサブコンポーネントセンターにローカルコンポーネントを定義し、ビューレイヤーにレンダリングします。

  // ルート コンポーネント (親コンポーネント、ベース コンポーネントとも呼ばれる)
        vm = new Vue({
            el:'#app',
 
            // サブコンポーネント(登録センター)
            コンポーネント:{
                // キーと値のペア。キーと値が同じ場合は子を省略できます
            }
        })
<div id="アプリ">
 
        <!-- コンポーネントの使用 -->
        <子></子>
    </div>

コンテンツが渡されない場合、スロットの (デフォルトの) コンテンツが表示されます。

ビューレイヤーのスロットにコンテンツを渡します。

 <!-- コンポーネントの使用 -->
        <子供>
            <h1 style="color: aqua;">これはコンテンツです</h1>
        </子>

コンテンツが渡されると、スロットの (デフォルトの) コンテンツは表示されません。

注: ビュー レイヤーのスロットにコンテンツを渡すには、子コンポーネントにスロットが存在している必要があります。そうでない場合は表示されません。

子コンポーネントに複数の匿名スロットがある場合、渡されたコンテンツは各スロットに個別に配置されます。

 テンプレート:`
            <div>
                <p>私はサブコンポーネントです</p>
                <p>私は言葉の列です</p>
                <slot>これはプレースホルダーです</slot>
                <スロット></スロット>
                <スロット></スロット>
            </div>
            `
<子供>
            <h1 style="color: aqua;">これが最初のコンテンツです</h1>
            <h1 style="color: red;">この 2 番目のコンテンツ</h1>
        </子>

2. 名前付きスロット

子コンポーネントでスロットを定義するときは、対応するスロットに名前を付けて、その後の親コンポーネントの挿入を容易にし、名前に従って対応するコンテンツを埋めます。

まず、子コンポーネントでスロットに名前を付けます (匿名スロットには実際にはデフォルト名 default がありますが、これは省略できます)。

 テンプレート:`
            <div>
                <p>私はサブコンポーネントです</p>
                <p>私は言葉の列です</p>
                <slot name="default">これはプレースホルダーです</slot>
                <slot name="t1">これは t1 プレースホルダーの内容です</slot>
                <slot name="t2">これは t2 プレースホルダーの内容です</slot>
                <slot name="t3">これは t3 プレースホルダーの内容です</slot>
                <slot name="t5">これはt4の内容です</slot>
            </div>
            `、

名前付きスロットを使用するメソッド

1. サブコンポーネント内のスロットを定義し、名前を付ける

2. 親コンポーネントのビューレイヤーのタグに、タグにスロット属性を追加します。

このプロパティには特定のスロットの名前を割り当てることができます

 <子供>
            <!-- この時点では、これら 2 つの文はまだ匿名スロットに配置されています -->
            <h1 style="color: aqua;">これが最初のコンテンツです</h1>
            <h1 style="color: red;">この 2 番目のコンテンツ</h1>
 
                <!-- slot="t1" はコンテンツを配置するスロットを指定します -->
            <h2 style="color: blue;" slot="t1">名前付きスロット t1 で使用したい</h2>
            <h3 style="color: green;" slot="t2">名前付きスロット t2 で使用したい</h3>
            <h4 style="color: orange;" slot="t3">t3 という名前のスロットに配置したい</h4>
            <h5 style="color: pink;" slot="t4">t4 という名前のスロットで使用したい</h5>
        </子>

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue デフォルトスロットの理解とサンプルコード
  • Vue 名前付きスロットの基本的な使用例
  • Vue はスロットを使用してコンテンツを配布します。操作例 [単一スロット、名前付きスロット、スコープ付きスロット]
  • Vue の匿名スロット、名前付きスロット、スコープ付きスロットの使い方の詳細な説明
  • Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明
  • VUE のコンパイル スコープとスロット スコープのスロットの問題について
  • Vueスコープスロットの実装方法と機能の詳しい説明
  • Vue のデフォルト スロット、名前付きスロット、スコープ スロットの定義と使用方法

<<:  CSSはインラインブロックのずれの問題を解決します

>>:  MySQL の不正な文字列値の解決方法

ブログ    

推薦する

Django2.* + Mysql5.7 開発環境統合チュートリアル図

環境: 10.12 の新機能Python 3.6 MySQL 5.7.25 の場合ジャンゴ 2.2....

MySQL 並列レプリケーションの簡単な分析

01 並列レプリケーションの概念MySQL のマスター スレーブ レプリケーション アーキテクチャで...

ウェブマスターが注目すべき、ウェブサイトのユーザビリティを向上させる 9 つのコード最適化のヒント

1. ロゴに代替テキストを追加するこれには 2 つの利点があります。スクリーン リーダーがロゴ画像の...

mysql 8.0.19 winx64.zip インストール チュートリアル

この記事は参考までにmysql 8.0.19 winx64.zipのインストールチュートリアルを記録...

CentOS 7 で Python を 3.6.6 にアップグレードした後に発生する yum エラー問題の解決方法の概要

最近、テスト サーバーのオペレーティング システムを Cent0S 7.5 にアップグレードし、Py...

React で遅延読み込みを使用して最初の画面の読み込み時間を短縮する方法

目次使用インストールルーティングでどのように使用しますか?読み込み速度の比較最近、中間およびバックエ...

MySql マスタースレーブレプリケーションメカニズムの包括的な分析

目次マスタースレーブレプリケーションメカニズム非同期レプリケーション準同期レプリケーションマスタース...

Win10 システムに MySQL8.0.13 をインストールする際の問題と解決策

オペレーティングシステム: Windows10 MySQL バージョン: 8.0.13-winx64...

アイデアを通じてプロジェクトをDockerにパッケージ化する方法

多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

CentOS7 インストール GUI インターフェースとリモート接続の実装

ブラウザ (Web ドライバー) ベースの Selenium テクノロジを使用してデータをクロールす...

Vue で pdfjs を使用して PDF ファイルをプレビューする方法

目次序文考えるライブラリディレクトリの解析とダウンロード使い方ファイルの場所実際の通話質問要約する序...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

MySQL での and or クエリの優先度分析

これは見落とされがちな問題かもしれません。まず、次の点を明確にする必要があります。 MySQL では...

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...