WebPACKの研究ノート - 深コンポーネント(スロットスロット)

2.6.0では、我々スロットとスコープという名前のスロットとしては、新しいユニファイされた文法導入されました(つまり、  v-slot 命令)。

これは、置き換え  slot と  slot-scope の両方が現在放棄が、除去されていないとのままですされているドキュメントのプロパティ。この新しい構文の起源はで見つけることができ  RFC

 

スロットのコンテンツ:テキスト、HTMLフラグメント、他のコンポーネント、そうでない場合は、<スロット>スロット、その後、任意の内容は、その中に離れてスローされます

<ナビゲーションリンク> //组件内容

< V-バインド:HREF = "URL" クラス= "NAV-リンク"> < スロット> </ スロット> </ A>

<ナビゲーションリンクURL = /プロフィール > 
  あなたのプロフィール<br>
 </ナビゲーションリンク> 

そうレンダリング

 

// 他のテンプレートコード
 
<ナビゲーション・リンクURL = " /プロフィール" > 
  <! -フォント恐ろしいアイコンを追加します- > 
  <スパンクラス = " FA FA-ユーザー" > </ span>の
  プロファイル
 </ navigation-リンク>


< URL = "/プロフィール" クラス= "NAV-リンク">

<スパンクラス= "FA FA-ユーザー"> </ span>を
  あなたのプロフィール
 </ A>

 

適用範囲コンパイル:このページの範囲を、あなたは、ナビゲーションリンクの内側のスコープにアクセスすることはできません

すべてのコンテンツの親テンプレートは、ドメインのコンパイルにおける親の役割です。

すべてのサブテンプレートの内容は、子スコープでコンパイルされています。

<ナビゲーションリンクURL = /プロファイル > 
  ログイン AS {{}} //ユーザーポイント現在のuser.nameページスコープ
 </ナビゲーションリンク>

フォールバックコンテンツ:コンポーネントのデフォルトのデータは、あなたが私には、彼らのデータが表示されます、私に何かを渡しません!

時には、特定の引当金を設定したスロット(つまり、デフォルトで)コンテンツが有用である、それは一度にレンダリングされるコンテンツを提供していませんでした。ソケットアセンブリ

 <ボタンタイプは= " 送信" > 
  <スロット>送信</スロット> 
</ボタン>

 

スロットの名前:< スロット名= "名前"> </ スロット>

< ベース -layout> 要素

の<div クラス = " コンテナ" > 
  <ヘッダ> 
    <! -私たちはここにヘッダを配置する- > 
  </ヘッダ> 
  <メイン> 
    <! -私たちは、ここでの主な内容を載せていきたいと思います- - > 
  </メイン> 
  <フッタ> 
    < - > -私たちはここにフッターを入れたい!
  </フッタ> 
</ div>の

1:なしA   輸出は名前"デフォルト"と表示されません。2:匿名のソケットでは、V-スロットテンプレートで、コンテンツを提供する3:ことに注意してください   、あなたは一つだけを追加することができます   にname<slot>

v-slot<template>
< ベース -layout>
   <テンプレートV-スロット:ヘッダ> 
    <H1>ここではあるかもしれないページのタイトル</ H1> 
  </テンプレート> 

  <P>段落のための主な内容</ P>。
  <P>そしてもう一つます。</ p> 

  <テンプレートV-スロット:フッター > 
    <P>ここで" sのいくつかの連絡先</ P> 
  </テンプレート> 
</ ベース -layout>
< ベース -layout> 
  <テンプレートV-スロット:ヘッダ> 
    <H1>ここではあるかもしれないページのタイトル</ H1> 
  </テンプレート> 

  <テンプレートV-スロット:デフォルト > 
    <P>段落のため。メインコンテンツ</ P> 
    <P>また、別の1 </ P>。
  </テンプレート> 

  <テンプレートV-スロット:フッター> 
    <P>ここで" sのいくつかの連絡先</ P> 
  </テンプレート> 
</ ベース -layout>

 

スコープスロット:みましょうだけのデータサブアセンブリにアクセスするためのスロットコンテンツを 

時には、データサブアセンブリの内容にアクセスするためのソケットを残すのみ有効です

唯一の  <current-user> コンポーネント内でアクセスすることができます  user し、私たちが提供するコンテンツは、親のレンダリングです。

 

結合  <slot> 素子特性にはスロット支柱と呼ばれています。今、親スコープに、私たちは与えることができ  v-slot 、我々が提供するスロット小道具の名前を定義するための値で:

 

 

 

独占デフォルトのスロットを省略構文:

このようなアプローチはまた、より簡単にすることができます。以下のような不特定のコンテンツを想定し、デフォルトとしてスロットを対応する引数なしでは、  v-slot デフォルトのスロットに対応すると仮定されています

それは曖昧な範囲につながる可能性があるため、デフォルトのスロット省略構文が命名、およびスロットミックスすることができないことに注意してください。

<現在のユーザVスロット:デフォルト = " slotProps " > 
  {{slotProps.user.firstName}}
 </現在のユーザ>
<現在のユーザは、Vスロット= " slotProps " > 
  {{slotProps.user.firstName}}
 </現在のユーザ>

 

出现多个插槽,请为所有插槽使用完这个的template语法
<current-user>
  <template v-slot:default="slotProps">
    {{ slotProps.user.firstName }}
  </template>

  <template v-slot:other="otherSlotProps">
    ...
  </template>
</current-user>

 

解构插槽 Prop:作用域插槽组件数据传递出来,内部工作原理是将你的插槽内容包括在一个传入单个参数的函数里

这个地方看得有点蒙圈!

function (slotProps) {
  // 插槽内容
}

动态插槽名:

<base-layout>
  <template v-slot:[dynamicSlotName]>
    ...
  </template>
</base-layout>

 

具名插槽的缩写:v-slot:header  缩写为#header,必须有name 

<base-layout>
  <template #header>
    <h1>Here might be a page title</h1>
  </template>

  <p>A paragraph for the main content.</p>
  <p>And another one.</p>

  <template #footer>
    <p>Here's some contact info</p>
  </template>
</base-layout>
该缩写只在其有参数的时候才可用。这意味着以下语法是无效的

<!-- 这样会触发一个警告 -->
<current-user #="{ user }">
  {{ user.firstName }}
</current-user>

<current-user #default="{ user }">
  {{ user.firstName }}
</current-user>

 

おすすめ

転載: www.cnblogs.com/liuguiqian/p/11023734.html