スロットとは何ですか? Vue3 でスロットを使用する方法について話しましょう
Vue Vue を使ったことがある人なら誰でも多かれ少なかれスロットを使ったことがあると思いますが、その用途をすべて知っていますか?この記事では、ギャップを見つけて埋めるのに役立つ、Vue3 のスロットの使用法をすべて説明します。 (学習ビデオ共有: vue ビデオ チュートリアル )
スロットとは
簡単に言えば、サブで提供されるスロットです。 -component 親コンポーネントによって使用される ピット
。<slot></slot>
で表されます。親コンポーネントは、このピットに任意のテンプレート コードを入力し、その後 ##子コンポーネントの #<slot></slot> はこれらの内容に置き換えられます。たとえば、最も単純なスロットの例
//父组件 <template> <div> <child>Hello Juejin</child> </div> </template> <script> import Child from './Child.vue' </script> //子组件Child <template> <div> <p>1</p> <slot></slot> <p>2</p> </div> </template>
<slot></slot> は、子コンポーネント タグ
スペースのコンテンツ。もちろん、この期間中に任意のコード スニペットを渡すことができ、そのコード スニペットは
<slot></slot> の位置に配置されます。
##同様に、
//父组件 <template> <div> <child>{{ msg }}</child> </div> </template> <script> import { ref } from 'vue' import Child from './Child.vue' const msg = ref('Hello Juejin') </script>
のように、タグ <child></child>
の間に変数を入れることもできます。 まず、以下について説明します。頻繁に現れる 2 つの単語
と スロット コンテンツ
は、その後の読み方での混乱を防ぐためのものです:
同じ
は、この msg
変数を表します。したがって、子コンポーネント slot
は親コンポーネントのデータ スコープにアクセスできますが、slot content
は子コンポーネントのデータ (つまり、次の 2 つの <) にはアクセスできません。親コンポーネント ;Child>
の間では子コンポーネント内のデータは使用できません)、これがいわゆるレンダリング スコープです。 slot
パラメータを slot content
に渡す方法は後ほど紹介します。
は、親コンポーネント
slot content が指定されている場合、子コンポーネントの slot
のデフォルトのコンテンツ (現時点では <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">//子组件
<template>
<div>
<slot>我是默认内容</slot>
</div>
</template>
//父组件1
<template>
<div>
<child></child>
</div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script>
//父组件2
<template>
<div>
<child>Hello Juejin</child>
</div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script></pre><div class="contentsignin">ログイン後にコピー</div></div>
など) を指定できます。親コンポーネント 1
#提供されたコンテンツを表示
# #NamedSlot
1 つの スロット
スロットが必要になります。したがって、名前付きの slot
であるnamed slot があります。簡単に言うと、この
名前付きスロット の目的は、ニンジンを罠にかけて、あるべき場所に留まらせることです。たとえば、
name
のスロットは、名前付きスロットと呼ばれます。
name が指定されていない
には、暗黙的に「default」という名前が付けられます。親コンポーネントでは、
v-slot:xxx (
#xxx と省略可能) ディレクティブの
要素を使用して名前を渡すことができます。下に進み、対応する
スロット と一致します。たとえば、
//子组件
<template>
<div>
<!-- 大萝卜 -->
<div>
<slot></slot>
</div>
<!-- 小萝卜 -->
<div>
<slot></slot>
</div>
<!-- 中萝卜 -->
<div>
<slot></slot>
</div>
</div>
</template>
//父组件
<template>
<div>
<child>
<!-- #smallTurnip 为v-slot:smallTurnip缩写 -->
<template>
小萝卜
</template>
<template>
中萝卜
</template>
<template>
大萝卜
</template>
</child>
</div>
</template>
<script>
import Child from './Child.vue'
</script>
したがって、親コンポーネント内の順序を気にする必要はありません。テンプレートを作成して名前を付けるだけで、自動的に実行されます。対応する場所に移動します。
v-slot:[変数名]
と表記するか、#[変数名]と省略します。 //父组件
<template>
<div>
<child>
<!-- 等同于#smallTurnip -->
<template>
小萝卜
</template>
<template>
中萝卜
</template>
<template>
大萝卜
</template>
</child>
</div>
</template>
<script>
import { ref } from 'vue'
import Child from './Child.vue'
const slotName = ref('smallTurnip')
</script>
ログイン後にコピー
//父组件 <template> <div> <child> <!-- 等同于#smallTurnip --> <template> 小萝卜 </template> <template> 中萝卜 </template> <template> 大萝卜 </template> </child> </div> </template> <script> import { ref } from 'vue' import Child from './Child.vue' const slotName = ref('smallTurnip') </script>
スコープ スロットスコープ スロット
前述のスロットの内容
アクセスすることは不可能ですサブコンポーネントのデータですが、スロット コンテンツのサブコンポーネントのステータスにアクセスしたい場合はどうすればよいでしょうか?
実際、slot は、プロパティを親コンポーネントの
slot content## にバインドすることで、slot
タグに渡すことができます。コンポーネント。まず、デフォルトのスロット
//子组件 <template> <div> <slot></slot> </div> </template> //父组件 <template> <div> <child> My name is {{ slotProps.personName }} and I am {{ slotProps.age }} years old this year </child> </div> </template> <script> import Child from './Child.vue' </script>
の値の転送方法を見てみましょう。slot
によって提供されるデータを構造体<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><template>
<div>
<child>
My name is {{ personName }} and I am {{ age }} years old this year
</child>
</div>
</template></pre><div class="contentsignin">ログイン後にコピー</div></div>
##の形式で取得することもできます。 #<p>注意不能绑定<code>name
属性,因为你绑定了name
它就成了具名插槽了。同样具名插槽中的name
属性也不会传递给插槽内容
。因为传递的参数只能在插槽内容
中使用,所以这类能够接受参数的插槽就被称为了作用域插槽
。
具名作用域插槽
下面再看下具名作用域插槽
它的传参方式。它接收参数的方式是通过template
标签的指令v-slot
的值获取的,所以可以缩写成这样
//父组件 <template> <div> <child> <template> {{ bigTurnipProps.message }} </template> </child> </div> </template> <script> import Child from './Child.vue' </script> //子组件Child.vue <template> <div> <!-- 大萝卜 --> <div> <slot></slot> </div> </div> </template>
这类插槽便是具名作用域插槽
啦
写在最后
到这里插槽
(slot)的全部用法基本就已经介绍完啦。如果感觉对你有用的话赶紧点赞收藏吧!
以上がスロットとは何ですか? Vue3 でスロットを使用する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

エクスポートデフォルトは、VUEコンポーネントのエクスポートに使用され、他のモジュールがアクセスできるようにします。インポートは、単一または複数のコンポーネントをインポートできる他のモジュールからコンポーネントをインポートするために使用されます。

VUEのデフォルトのエクスポートが明らかになります:デフォルトのエクスポート、名前を指定せずにモジュール全体を一度にインポートします。コンポーネントはコンパイル時にモジュールに変換され、使用可能なモジュールはビルドツールを介してパッケージ化されます。名前付きのエクスポートと組み合わせて、定数や関数などの他のコンテンツをエクスポートできます。よくある質問には、循環依存関係、パスエラー、およびビルドエラーが含まれ、コードとインポートステートメントを慎重に調べる必要があります。ベストプラクティスには、コードセグメンテーション、読みやすさ、コンポーネントの再利用が含まれます。

データ構造は、VUEおよびElement-UIがカスケードしたドロップダウンボックスがプロップを通過し、静的データの直接割り当てがサポートされている場合に明確に定義する必要があります。データが動的に取得される場合は、ライフサイクルフック内で値を割り当て、非同期状況を処理することをお勧めします。非標準のデータ構造の場合、デフォルトプロップまたは変換データ形式を変更する必要があります。意味のある変数名とコメントで、コードをシンプルで理解しやすいままにしてください。パフォーマンスを最適化するには、仮想スクロールまたは怠zyな読み込み手法を使用できます。

VueおよびElement-UIカスケードセレクターは、簡単なシナリオでEL-Cascaderコンポーネントを直接使用できますが、よりエレガントで効率的で堅牢なコードを記述するには、次の詳細に注意する必要があります。データソース構造の最適化:データを平らにし、IDと括弧を使用して親子関係を表す。非同期読み込みデータ処理:読み込みステータス、エラープロンプト、ユーザーエクスペリエンスを処理します。パフォーマンスの最適化:オンデマンド読み込みまたは仮想スクロールテクノロジーを検討してください。コードの読みやすさと保守性:コメントを書き、意味のある変数名を使用し、コード仕様に従ってください。

初心者は、コンポーネントのエクスポートを簡素化し、柔軟性を向上させ、競合の命名を回避し、ビルドツールで特別に処理され、ビルド効率の最適化に役立つため、Vueコンポーネントへのエクスポートを好みます。さらに、コードの読みやすさと保守性を向上させ、エラーの可能性を低下させます。

エクスポートデフォルトとエクスポートの違い:エクスポートにより、名前のエクスポートが許可されます。インポートするときは同じ名前が必要であり、複数のコンポーネントをエクスポートできます。これは明確でメンテナンスが簡単です。エクスポートのデフォルトでは、1つのデフォルト値のみをエクスポートし、インポートを簡素化しますが、明確さを減らし、大規模なプロジェクトでの命令に簡単につながる可能性があります。 1つのコンポーネントのみをエクスポートする必要があると確信していない限り、最初にエクスポートを使用することをお勧めします。

VUEでのエクスポートデフォルトエクスポートは、エクスポートのデフォルトに続くものに応じて、オブジェクト、関数、または任意のJavaScript値になることができる値です。したがって、エクスポート:コンポーネントオプションオブジェクト(コンポーネントインスタンスの作成に使用)機能通常のJavaScriptオブジェクト

VUEとElement-UIのカスケードドロップダウンボックステンプレートをカスタマイズするには、次の手順が含まれます。カスケードセレクターの仕組みとVUEのスロットメカニズムを理解します。 El-CascaderでScoped-Slotを使用して、カスタムテンプレートを定義します。ノードとデータ変数を使用して、現在のノード情報と元のデータを取得します。アイコンや異なるスタイルなど、ニーズに応じて柔軟にデータを表示します。データ構造はElement-UIの要件に準拠しており、Scoped-Slotを正しく使用することに注意してください。非同期データの読み込みを処理するための国家管理ツールと併せて。ブラウザ開発者ツールを使用して問題を見つけます。
