スロットは、コンポーネント内のコンテンツの配置に役立ち、親コンポーネントがコンテンツを配置できるようにします。
次の場合のように、コンポーネントはその出力の生成に100%責任を持つことができます。
Vue.component('user-name', {
props: ['name'],
template: '<p>Hi {{ name }}</p>'
})
または、親コンポーネントに任意の種類のコンテンツを挿入させることもできます。スロット。
スロットとは何ですか?これは、コンポーネント出力内で予約され、いっぱいになるのを待っているスペースです。
あなたは置くことによってスロットを定義します<slot></slot>
コンポーネントテンプレート内:
Vue.component('user-information', {
template: '<div class="user-information"><slot></slot></div>'
})
このコンポーネントを使用する場合、開始タグと終了タグの間に追加されたコンテンツは、スロットプレースホルダー内に追加されます。
<user-information>
<h2>Hi!</h2>
<user-name name="Flavio"></user-name>
</user-information>
コンテンツ側に置くと<slot></slot>
タグ。何も渡されない場合のデフォルトのコンテンツとして機能します。
複雑なコンポーネントレイアウトでは、複数のスロットを使用して、コンテンツを整理するためのより良い方法が必要になる場合があります。
これがVueが私たちに提供する理由です名前付きスロット。
名前付きスロット
名前付きスロットを使用すると、スロットの一部をコンポーネントテンプレートレイアウトの特定の位置に割り当てることができ、slot
そのスロットにコンテンツを割り当てるために、任意のタグに属性を付けます。
テンプレートタグの外側にあるものはすべてメインに追加されますslot
。
便宜上、私はpage
この例の単一ファイルコンポーネント:
<template>
<div>
<main>
<slot></slot>
</main>
<aside>
<slot name="sidebar"></slot>
</aside>
</div>
</template>
親コンポーネントでスロットコンテンツを提供して、これを使用する方法は次のとおりです。
<page>
<template v-slot:sidebar>
<ul>
<li>Home</li>
<li>Contact</li>
</ul>
</template>
<h2>Page title</h2>
<p>Page content</p>
</page>
便利な速記があります、#
:
<page>
<template #sidebar>
<ul>
<li>Home</li>
<li>Contact</li>
</ul>
</template>
<h2>Page title</h2>
<p>Page content</p>
</page>
注:Vue2.6は非推奨になりました
slot
に有利な属性v-slot
、およびに追加する必要がありますtemplate
タグ(slot
任意のタグに適用できます)
スコープスロット
スロットでは、親から子コンポーネントに含まれるデータにアクセスできません。
Vueはこのユースケースを認識し、そのための方法を提供します。
<template>
<div>
<main>
<slot v-bind:dogName="dogName"></slot>
</main>
</div>
</template>
<script>
export default {
name: ‘Page’,
data: function() {
return {
dogName: ‘Roger’
}
}
}
</script>
親では、次を使用して渡した犬の名前にアクセスできます。
<page>
<template v-slot="slotProps">
{{ slotProps.dogName }}
</template>
</page>
slotProps
渡した小道具にアクセスするために使用した変数です。オブジェクトをその場で破壊することにより、子コンポーネントに渡す小道具を保持するためだけに変数を設定することを回避することもできます。
<page>
<template v-slot="{ dogName }">
{{ dogName }}
</template>
</page>
私の無料ダウンロードVueハンドブック
その他のvueチュートリアル:
- Vue.jsの概要
- Vue.js CLI:使用方法を学ぶ
- Vue.js DevTools
- Vue開発用のVSCodeの構成
- Vue.jsで最初のアプリを作成する
- Vue.js単一ファイルコンポーネント
- Vue.jsテンプレートと補間
- Vue.jsディレクティブ
- Vue.jsメソッド
- Vue.jsの計算されたプロパティ
- CSSを使用したVue.jsコンポーネントのスタイリング
- Vue.jsウォッチャー
- Vueメソッドvsウォッチャーvs計算されたプロパティ
- Vue.jsフィルター
- Vue.jsコンポーネント
- Vue.jsスロット
- Vue.jsコンポーネントの小道具
- Vue.jsイベント
- Vue.jsコンポーネントの通信
- Vue.jsステートマネージャー、Vuex
- Vue、別のコンポーネント内のコンポーネントを使用する
- Vue、クラス名として小道具を使用する方法
- Vue.js単一ファイルコンポーネントでSCSSを使用する方法
- Vue.jsでTailwindを使用する
- Vueルーター
- Vueコンポーネントを動的に表示する
- Vue.jsチートシート
- Vuexを使用してVueデータをlocalStorageに保存する
- Vueを使用してクラスを動的に適用する方法
- Vue、vモデルの使い方
- Vue、データが関数でなければならない理由
- Roadmap to become a Vue.js developer in 2020