ホームページ > 記事 > ウェブフロントエンド > スロットとは何ですか? 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
のデフォルトのコンテンツ (現時点では <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>
など) を指定できます。親コンポーネント 1
#提供されたコンテンツを表示
# #NamedSlot
1 つの スロット
ではニーズを満たせないことが多く、複数の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>
スコープ スロットスコープ スロット
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
によって提供されるデータを構造体<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>
##の形式で取得することもできます。 #<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 サイトの他の関連記事を参照してください。