VUE のコンパイル スコープとスロット スコープのスロットの問題について

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot-scope、スロット コンテンツ、vue インスタンス、コンテンツ配信 API のセットを置き換え、配信されたコンテンツを運ぶための出口としてスロット要素を使用します。

スロットは、単一スロット、名前付きスロット、スコープ付きスロットに分けられます。最初の 2 つは比較的単純なので、ここでは説明しません。今日は、スコープ付きスロットについて説明します。
簡単に言えば、最初の 2 つのスロットのコンテンツとスタイルは親コンポーネントによって決定されます。つまり、表示されるコンテンツとその表示方法は親コンポーネントによって決定されます。
スコープ付きスロットのスタイルは親コンポーネントによって決定されますが、コンテンツは子コンポーネントによって制御されます。簡単に言うと、最初の 2 種類のスロットはデータをバインドできず、スコープ スロットはバインドされたデータを持つスロットです。

ここではVUEのコンパイルスコープとスロットスコープについて紹介します。見てみましょう!

実際、コンポーネントが多数ある場合、コンポーネント内で変数を使用すると、変数のスコープは、それが定義されているコード内で実際に見つかります。見つからない場合は、エラーが報告されます。[これは非常に基本的なことで、誰でもわかります]

正式には、親コンポーネント テンプレート内のすべてが親スコープでコンパイルされ、子コンポーネント テンプレート内のすべてが子スコープでコンパイルされます。

次の例はこれを完璧に示しています。

スコープ付きスロットは理解するのが難しい点なので、注意深く理解する必要があります。

次に、ソフトウェアの要件について説明します。

サブコンポーネントにはデータのセットがあります。たとえば、pLanguages: ['JavaScript', 'Python', 'Swift', 'Go', 'C++'] です。これをサブコンポーネントのスロットに配置し、一部にはリスト表示、一部には - リンク、一部には * リンクを付けます。

まずソース コードを見てみましょう (スロットは使用されず、ハードコードされており、このコードではスロット スコープを使用するように書き直されています)。

ソースコード:

<!DOCTYPE html>
<html lang="ja">
    <ヘッド>
        <メタ文字セット="UTF-8">
        <title>ショッピングカート</title>
        <script src="js/vue.js"></script>
    </head>
    <本文>
            <!-- 未使用スロットの下のテンプレートはハードコードされています -->
        <テンプレートid="cpn">
                <div>
                	<ul>
                    <li v-for="pLanguages のアイテム">{{item}}</li>
                	</ul>
                </div>
        </テンプレート>

        <div id="アプリ">
              <cpn></cpn>
        </div>


        
        <スクリプト>
            constアプリ = 新しいVue({
                el: "#app",
                コンポーネント:
                    'cpn': {
                        テンプレート: "#cpn",
                        データ() {
                            戻る {
                                言語: ['JavaScript'、'Python'、'Swift'、'Go'、'C++']
                            }
                        }
                    }
                }
            })
        </スクリプト>

    </本文>
</html>

したがって、スロットを使用する場合は、

<!DOCTYPE html>
<html lang="ja">
    <ヘッド>
        <メタ文字セット="UTF-8">
        <title>ショッピングカート</title>
        <script src="js/vue.js"></script>
    </head>
    <本文>
            <!-- スロットが使用され、スロットのデフォルト値が以下のように設定されます -->
        <テンプレートid="cpn">
              <div>
               <スロット> <!-- 変更済み -->
                   <ul>
                       <li v-for="pLanguages のアイテム">{{item}}</li>
                   </ul>
               </スロット>
              </div>
        </テンプレート>

        <div id="アプリ">
              <cpn></cpn> <!-- デフォルトの値リスト形式を使用します -->
              <cpn> <!-- 変更済み -->
              
                    <!-- 問題はここにあります。cpn コンポーネントのデータ内のデータをリンクの形で表示したいのですが、それができません。
                    スコープのため、ここでのスコープは Vue インスタンス アプリです。 Vueインスタンスアプリのデータのみ取得可能です!
                     したがって、次のコードは間違っています。 ! ! では、スロット コードが子コンポーネントからデータを取得する問題をどのように解決するのでしょうか?
                     -->
                    
                    <span v-for="pLanguages 内の項目">{{項目 + "-"}}</span>
                    
              </cpn>
        </div>


        
        <スクリプト>
            constアプリ = 新しいVue({
                el: "#app",
                コンポーネント:
                    'cpn': {
                        テンプレート: "#cpn",
                        データ() {
                            戻る {
                                言語: ['JavaScript'、'Python'、'Swift'、'Go'、'C++']
                            }
                        }
                    }
                }
            })
        </スクリプト>

    </本文>
</html>

コードは詳細に説明されており、問題点はマークされています。要約すると、次のようになります。

サブコンポーネントの範囲内ではないので、サブコンポーネントでスロット コードがデータを取得する問題をどのように解決すればよいでしょうか?

解決策: スロットスコープスロットを使用する

VUE のコンパイル スコープとスロット スコープに関するこの記事はこれで終わりです。より関連性の高い vue スコープ スロット コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  mysql-8.0.17-winx64 のデプロイメント方法

>>:  yum 経由で CentOS に PHP をインストールするチュートリアル

推薦する

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

クールなページング効果を実現するネイティブJS

この記事では、次のような効果を持つ JS ページング効果の例を紹介します。クールだと思いませんか? ...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

NodeJSとブラウザにおけるこのキーワードの違い

序文JavaScript を学習した人なら誰でも、さまざまな環境で this がどこを指すかという問...

Mysql 8.0.18 ハッシュ結合テスト (推奨)

ハッシュ結合ハッシュ結合は実行にインデックスを必要とせず、ほとんどの場合、現在のブロックネストループ...

Dockerのクイックガイド

Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...

Vue プロジェクトでのスキャンコード決済の実装例 (デモ付き)

目次需要背景思考分析UI 表示始める1. 支払いコンポーネントテンプレートを作成する2. 支払いコン...

1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。

キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...

CSS のオーバーフロー:hidden エラーの解決方法

失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...

Vue ソング プログレス バーのサンプル コード

なお、これはvue-cliで作成したプロジェクトではありません。vue.jsを参照して記述したHTM...

Win10 64 ビットで圧縮パッケージを使用して最新の MySQL 8.0.18 をインストールするチュートリアル (画像とテキスト付き)

WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...

Mac でソースコードから MySQL 5.7.17 をコンパイルしてインストールするチュートリアル

1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...

nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法

効果現在、プロジェクトは2つ(project1、project2)あり、nginxに付属するinde...

現在使用されている設定ファイル my.cnf を表示する mysql メソッド (推奨)

my.cnfは、MySQL の起動時に読み込まれる設定ファイルです。通常は MySQL インストー...