14-コンポーネント化された高度な名前付きスロット


名前付きスロットとは

子コンポーネントが複数のスロットを使用する必要がある場合は、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つの部分に分かれており、独立していると考える場合は、影響を受けることなく名前付きスロットを使用できます。
ここに画像の説明を挿入


自分の学習ノートを初めて記録します。問題を見つけた場合は、ポインタを教えてください。

おすすめ

転載: blog.csdn.net/qq_42647711/article/details/108447592