名前付きスロットとは
子コンポーネントが複数のスロットを使用する必要がある場合は、slot要素のname属性を使用して名前付きスロットを定義し、親コンポーネントが使用されているときの識別を容易にすることができます。使用方法について詳しく説明します。
名前付きスロットの使用
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<div id="app">
<cpn><span>标题</span></cpn><br>
<cpn>
<span slot="left">导航占用左边的位置</span>
<span slot="center">标题占用中间的位置</<span>
</cpn>
<br />
<cpn><span slot="left">修改左边的占位</span></cpn>
<br />
<cpn><button slot="right">修改右边占位</button></cpn>
</div>
<template id="cpn">
<div>
<slot name="left"><span>左边</span></slot>
<slot name="center"><span>中间</span></slot>
<slot name="right"><span>右边</span></slot>
</div>
</template>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
components: {
cpn: {
template: "#cpn",
},
},
})
</script>
</body>
</html>
- このとき、子コンポーネントは保証スロットを定義しています。親コンポーネントをslot属性なしで使用すると、デフォルトでは子コンポーネントのスロットをカバーできません。このとき、親コンポーネントはスロット機能を使用しません。したがって、子コンポーネントはデフォルトのデータを表示します。写真が示すように:
<cpn><span>标题</span></cpn>
- 親コンポーネントが使用されるときにスロット属性が定義され、子コンポーネントの名前属性がバインドされている場合、2つの属性は1対1で対応し、ターゲットの置換を実現できます。写真が示すように:
<cpn>
<span slot="left">导航占用左边的位置</span>
<span slot="center">标题占用中间的位置</<span>
</cpn>
<cpn><span slot="left">修改左边的占位</span></cpn>
名前付きスロットのアプリケーションシナリオ
たとえば、ナビゲーションバーコンポーネントを作成する場合、それは左、中央、右の3つの部分に分かれており、独立していると考える場合は、影響を受けることなく名前付きスロットを使用できます。
自分の学習ノートを初めて記録します。問題を見つけた場合は、ポインタを教えてください。