Vueのスロットの説明
15632 ワード
1.スロットは何ですか
簡単に言えば、コンポーネントの内部に1つ以上の空きスペース(スロット)が残っており、対応するテンプレートコードを入れることができます.スロットの登場により、コンポーネントがより柔軟になります.element-ui、iviewなどのコンポーネントライブラリでは、スロットの役割が十分に利用されています.
2.スロットの区分
匿名スロット:名前のないスロット、つまりデフォルトのスロットです.名前付きスロット:名前を特定するスロットがあり、この名前でこのスロットを見つけることができます.役割ドメインスロット:はっきり言ってコンポーネント上の属性で、コンポーネント要素の内部で使用します.そう言えば理解できないかもしれませんが、後で説明します.
3.匿名スロット
あまり話さないで、まずコードをつけます.
スロットに名前を付けて、名前に対応して内容を挿入します.名前がないのは上の匿名のスロットで、デフォルトのスロットとも呼ばれています.
注意4点スロットの内容は、テンプレートパッケージ を使用する必要があります.名前を指定しないテンプレートを匿名スロットに挿入するには、名前付きスロットを使用することをお勧めします.コード追跡が便利で、直感的にはっきりしています. 匿名スロットには、非表示の名前「default」 があります.スロット付きv-slot: と略すことができます.
5.スコープスロット
さっきお話ししたように、役割ドメインスロットは、コンポーネントのプロパティがコンポーネント要素内で使用されています.まず例を見てみましょう
使用する必要がある場合は、次のようにします.
まとめ:親コンポーネントはサブコンポーネントに渡され、propsが受信すると、スロットslotはバインド属性伝達パラメータを介して親コンポーネントに返され、テンプレートコードでもデータでも制御権は親コンポーネントの手に完全に握られます.
2019-11-19久しぶりにいくつかの博文を书いて、后で毎日少しのものを书くことを坚持して、自分に理解するのがもっと良くて、顽张ります!https://www.jianshu.com/p/b0234b773b68
簡単に言えば、コンポーネントの内部に1つ以上の空きスペース(スロット)が残っており、対応するテンプレートコードを入れることができます.スロットの登場により、コンポーネントがより柔軟になります.element-ui、iviewなどのコンポーネントライブラリでは、スロットの役割が十分に利用されています.
2.スロットの区分
匿名スロット:名前のないスロット、つまりデフォルトのスロットです.名前付きスロット:名前を特定するスロットがあり、この名前でこのスロットを見つけることができます.役割ドメインスロット:はっきり言ってコンポーネント上の属性で、コンポーネント要素の内部で使用します.そう言えば理解できないかもしれませんが、後で説明します.
3.匿名スロット
あまり話さないで、まずコードをつけます.
// ,
Vue.component("component-one",{
template:`
Hellp
`
})
//
<component-one></component-one>
// :
<div>
<p>Hellp</p>
</div>
=====================================
//
<component-one>
</component-one>
// :
<div>
<p>Hellp</p>
</div>
これが匿名スロットで、この位置は私たちが書いた内容で完全にカバーされます!通常、スロットに物を挿入するのはtemplateラベルの形で、規範的に見えます.// component-one template
<component-one>
<template> </template>
</component-one>
4.名前付きスロットスロットに名前を付けて、名前に対応して内容を挿入します.名前がないのは上の匿名のスロットで、デフォルトのスロットとも呼ばれています.
//
Vue.component("component-two",{
template:`
`
})
//
<component-two>
<template v-slot:"one">
one
</template>
<template v-slot:"two">
two
</template>
<div>
( )
</div>
</component-two>
//
<div>
one
two
( )
</div>
vue>=2.6.0バージョンで、slotとslot-scopeの代わりにv-slotを使用します.注意4点
5.スコープスロット
さっきお話ししたように、役割ドメインスロットは、コンポーネントのプロパティがコンポーネント要素内で使用されています.まず例を見てみましょう
//
<div class="child-page">
<h1>{{title}} </h1>
<slot name="header"></slot>
<slot name="body"></slot>
<slot name="footer"></slot>
</div>
props: {
title: {
type: String
}
}
//
<child-page // ( )
:title="' '"
>
<template #header> // ( )
<p>{{title}}</p> //
</template>
<template #footer>
<p> </p>
</template>
<template #body>
<p> </p>
</template>
</child-page>
親コンポーネントからコンポーネント内部に渡されるスロットの内容は、サブコンポーネントによってコンパイルされ、スロットの役割ドメインはサブコンポーネントによって決定されます.したがって、スロットの内容を動的に変更する必要がある場合は、サブコンポーネントを親コンポーネントに渡す必要があります.使用する必要がある場合は、次のようにします.
//
<div class="child-page">
<h1>{{title}} </h1>
<slot name="header" :say:"title"></slot>
<slot name="body"></slot>
<slot name="footer"></slot>
</div>
props: {
title: {
type: String
}
}
//
<child-page
:title="' '"
>
<template #header v-slot:header="say">
<p>{{say}}</p> //{"say": }
</template>
<template #footer>
<p> </p>
</template>
<template #body>
<p> </p>
</template>
</child-page>
これがコンポーネントのプロパティです.titleはコンポーネント要素内のスロットで=>役割ドメインスロットを使用できます!!まとめ:親コンポーネントはサブコンポーネントに渡され、propsが受信すると、スロットslotはバインド属性伝達パラメータを介して親コンポーネントに返され、テンプレートコードでもデータでも制御権は親コンポーネントの手に完全に握られます.
2019-11-19久しぶりにいくつかの博文を书いて、后で毎日少しのものを书くことを坚持して、自分に理解するのがもっと良くて、顽张ります!https://www.jianshu.com/p/b0234b773b68