この記事では、Vue でのスロットとスロットスコープの具体的な使い方を主に紹介します。編集者がそれを紹介し、参考にさせていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
以前に書かれたものです
vue のスロットに関するドキュメントは非常に短く、非常に簡潔な言語で書かれています。また、メソッド、データ、計算などの一般的なオプションの使用頻度や順序とは異なります。これにより、スロットを初めて使用する開発者は「忘れて、後で学習すれば、基本的なコンポーネントはすでに作成できる」と考えて、vue ドキュメントを閉じてしまう可能性があります。
実際、スロットの概念は非常に簡単です。3 つの部分に分けて説明します。この部分も vue ドキュメントの順序で書かれています。
3 番目のパートに入る前に、スロットに触れたことのない生徒に、スロットとは何かという簡単な概念を理解してもらいます。スロット (スロットとも呼ばれます) は、コンポーネントの HTML テンプレートです。このテンプレートは表示されるかどうかに関係なく、 、どのように表示されるかは親コンポーネントによって決まります。 実際、ここでは、スロットを表示するかどうかと、どのように表示するかという、スロットの 2 つの中心的な問題が強調されています。
スロットはテンプレートであるため、実際には、テンプレート タイプの観点から、コンポーネントは非スロット テンプレートとスロット テンプレートの 2 つのカテゴリに分類できます。
非スロット テンプレートは、「p、span、ul、table」などを参照する html テンプレートを指します。非スロット テンプレートの表示と非表示、およびそれらの表示方法はプラグイン自体によって制御されます。スロット テンプレートはスロットであり、その表示と非表示、および表示に使用される最終的な HTML テンプレートは親コンポーネントによって制御されるため、空のシェルです。ただし、スロットの表示位置は実際にはサブコンポーネント自体によって決定され、スロットがコンポーネント テンプレートに記述されている場合は、親コンポーネントから渡されたテンプレートが表示されます。
シングルスロット | デフォルトスロット | 匿名スロット
まず第一に、シングルスロットは vue の正式名ですが、実際にはデフォルトスロット、またはデフォルトスロットと呼ぶこともできます。名前は slot なので、匿名スロットと呼ぶことができます。 name 属性を設定する必要がないためです。
単一スロットはコンポーネント内のどこにでも配置できますが、その名前のように、コンポーネント内にこのタイプのスロットは 1 つだけ存在できます。同様に、名前 (name 属性) が異なる限り、多数の名前付きスロットが存在する可能性があります。
以下は一例です。
親コンポーネント:
<template> <p class="father"> <h3 id="这里是父组件">这里是父组件</h3> <child> <p class="tmpl"> <span>菜单1</span> <span>菜单2</span> <span>菜单3</span> <span>菜单4</span> <span>菜单5</span> <span>菜单6</span> </p> </child> </p> </template>
子コンポーネント:
<template> <p class="child"> <h3 id="这里是子组件">这里是子组件</h3> <slot></slot> </p> </template>
この例では、親コンポーネントが
<p class="tmpl"> <span>菜单1</span> <span>菜单2</span> <span>菜单3</span> <span>菜单4</span> <span>菜单5</span> <span>菜单6</span> </p>
最終的なレンダリング結果は次の図に示すとおりです:
注: すべてのデモは、観察しやすいようにスタイル設定されています。このうち、親コンポーネントは灰色の背景で塗りつぶされ、子コンポーネントは水色の背景で塗りつぶされます。
Named Slot
Anonymous スロットには name 属性がないため、匿名スロットになります。その後、スロットに name 属性を追加すると、名前付きスロットになります。名前付きスロットはコンポーネント内に N 回出現できます。さまざまな場所に出現します。以下の例は、2 つの名前付きスロットと 1 つのスロットを持つコンポーネントです。これらの 3 つのスロットは、同じ CSS スタイルのセットを使用して親コンポーネントによって表示されますが、内容は若干異なります。
親コンポーネント:
<template> <p class="father"> <h3 id="这里是父组件">这里是父组件</h3> <child> <p class="tmpl" slot="up"> <span>菜单1</span> <span>菜单2</span> <span>菜单3</span> <span>菜单4</span> <span>菜单5</span> <span>菜单6</span> </p> <p class="tmpl" slot="down"> <span>菜单-1</span> <span>菜单-2</span> <span>菜单-3</span> <span>菜单-4</span> <span>菜单-5</span> <span>菜单-6</span> </p> <p class="tmpl"> <span>菜单->1</span> <span>菜单->2</span> <span>菜单->3</span> <span>菜单->4</span> <span>菜单->5</span> <span>菜单->6</span> </p> </child> </p> </template>
子コンポーネント:
<template> <p class="child"> // 具名插槽 <slot name="up"></slot> <h3 id="这里是子组件">这里是子组件</h3> // 具名插槽 <slot name="down"></slot> // 匿名插槽 <slot></slot> </p> </template>
表示結果は図のとおりです。
ご覧のとおり、親コンポーネントは、HTML テンプレートのスロット属性を通じて名前付きスロットに関連付けられています。スロット属性のない HTML テンプレートは、デフォルトで匿名スロットに関連付けられます。
スコープ スロット | データ付きスロット
最後に、スコープ スロットがあります。これは少し理解するのが難しいです。正式にはスコープ スロットと呼ばれますが、実際には、前の 2 つのスロットと比較すると、データ付きスロットと呼ぶことができます。どういう意味ですか、最初の 2 つはコンポーネントのテンプレートに書かれています
匿名スロット
<slot></slot>
名前付きスロット
<slot name="up"></slot>
しかし、スコープスロットにはスロット上のバインディングデータが必要です。つまり、大まかに以下のように書く必要があります。
<slot name="up" :data="data"></slot> export default { data: function(){ return { data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba'] } }, }
前に述べたように、スロットが最後に表示されるかどうかは、以下に示すように、親コンポーネントが子コンポーネントの下にテンプレートを記述したかどうかによって決まります。
<child> html模板 </child>
それが書かれている場合、スロットはブラウザ上で何かを表示する必要があります。それが書かれていない場合、スロットは何もない空のシェルになります。
HTML テンプレートがあるということは、親コンポーネントが子コンポーネントにテンプレートを挿入することを意味します。では、どのようなスタイルを挿入する必要があるかは、親コンポーネントの HTML+CSS によって決まります。しかし、この一連のスタイルでは、コンテンツはどうでしょうか?
スコープ スロットはデータのセットにバインドされているため、親コンポーネントはそれを使用できます。したがって、状況は次のようになります。スタイルの最終決定権は親コンポーネントにありますが、コンテンツは子コンポーネントのスロット バインディングを表示できます。
我们再来对比,作用域插槽和单个插槽和具名插槽的区别,因为单个插槽和具名插槽不绑定数据,所以父组件是提供的模板要既包括样式由包括内容的,上面的例子中,你看到的文字,“菜单1”,“菜单2”都是父组件自己提供的内容;而作用域插槽,父组件只需要提供一套样式(在确实用作用域插槽绑定的数据的前提下)。
下面的例子,你就能看到,父组件提供了三种样式(分别是flex、ul、直接显示),都没有提供数据,数据使用的都是子组件插槽自己绑定的那个人名数组。
父组件:
<template> <p class="father"> <h3 id="这里是父组件">这里是父组件</h3> <!--第一次使用:用flex展示数据--> <child> <template slot-scope="user"> <p class="tmpl"> <span v-for="item in user.data">{{item}}</span> </p> </template> </child> <!--第二次使用:用列表展示数据--> <child> <template slot-scope="user"> <ul> <li v-for="item in user.data">{{item}}</li> </ul> </template> </child> <!--第三次使用:直接显示数据--> <child> <template slot-scope="user"> {{user.data}} </template> </child> <!--第四次使用:不使用其提供的数据, 作用域插槽退变成匿名插槽--> <child> 我就是模板 </child> </p> </template>
子组件:
<template> <p class="child"> <h3 id="这里是子组件">这里是子组件</h3> // 作用域插槽 <slot :data="data"></slot> </p> </template> export default { data: function(){ return { data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba'] } } }
结果如图所示:
相关推荐:
js组件SlotMachine实现图片切换效果制作抽奖系统_javascript技巧
以上がvue でのスロットとスロットスコープの具体的な使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
