検索
ホームページウェブフロントエンドjsチュートリアルvue コンポーネントを使用してスロットを使用してコンテンツを配布する手順の詳細な説明

今回は、vue コンポーネントでスロットを使用してコンテンツを配布する手順について詳しく説明します。vue コンポーネントでスロットを使用してコンテンツを配布する場合の 注意事項 について、実際のケースを見てみましょう。

1. スロットとは

コンポーネントを使用するとき、次のようにコンポーネントを組み合わせる必要があることがよくあります:

<app>
 <app-header></app-header>
 <app-footer></app-footer>
</app>
コンポーネントを組み合わせて使用​​する必要がある場合、親コンポーネントのコンテンツとコンポーネントのテンプレートを混合します。スロットを使用するこのプロセスは、コンテンツ配布 (トランスクルージョン) と呼ばれます。

次の 2 つの点に注意してください:

1. コンポーネントは、そのマウント ポイントに何が含まれるかを知りません。マウント ポイントの内容は、 の親コンポーネントによって決まります。

2. には独自のテンプレートがある可能性があります。データを送信する

プロップ、

イベント をトリガーするイベント、およびスロット コンテンツ配信は、Vue コンポーネントの 3 つの API ソースを構成します。コンポーネントがどれほど複雑であっても、コンポーネントはこれら 3 つの部分で構成されます。

2. スコープ

<child-component>
 {{ message }}
</child-component>
ここでのメッセージはスロットですが、コンポーネント のデータではなく、親コンポーネントのデータにバインドされています。

親コンポーネント テンプレートのコンテンツは親コンポーネント スコープでコンパイルされ、子コンポーネント テンプレートのコンテンツは子コンポーネント スコープでコンパイルされます。例:

   <p>
      <child-component></child-component>
    </p>
Vue.component('child-component',{
  template: '<p>子组件</p>'
});
var app15 = new Vue({
  el: '#app15',
  data: {
    showChild: true
  }
});
ここでの

stateshowChild は、親コンポーネントのデータにバインドされています。子コンポーネントにバインドしたい場合は、次のようにする必要があります。

    <p>
      <child-component></child-component>
    </p>
Vue.component('child-component',{
  template: '<p>子组件</p>',
  data: function(){
    return {
      showChild: true
    }
  }
});
したがって、スロットによって配布されるコンテンツのスコープは次のようになります。の親コンポーネント上にあります。

3. スロットの使用法

3.1 単一のスロット

この子コンポーネントのテンプレートで、特別な 要素を使用します。サブコンポーネント タグ内に挿入されたコンテンツは、サブコンポーネントの タグとそのコンテンツを置き換えます。

 <p>
      <my-component16>
        <p>分发的内容</p>
        <p>更多分发的内容</p>
      </my-component16>
    </p>
Vue.component('my-component16',{
  template: '<p>' +
        '<slot><p>如果父组件没有插入内容,我将作为默认出现<</p></slot>' +    //预留的slot插槽
       '</p>'
});
var app16 = new Vue({
  el: '#app16'
});
レンダリング結果は次のとおりです:

<p>
  </p><p>
    </p><p>分发的内容</p><p>
    </p><p>更多分发的内容</p><p>
  </p>
要素は子コンポーネント child-component のテンプレートで定義されており、

がデフォルトのコンテンツとして使用されます。が親コンポーネントで使用されている場合、このデフォルトのテキストがレンダリングされます。slot が書き込まれた場合は、 全体が置き換えられます。

child-component 的模板内定义了一个<slot>元素,并且用一个<p>作为默认的内容,在父组件没有使用slot 时,会渲染这段默认的文本;如果写入了slot, 那就会替换整个<slot> 。

3.2具名slot

给<slot> 元素指定一个name 后可以分发多个内容,具名Slot 可以与单个slot 共存。

  <p>
      <my-component17>
        <h3 id="标题">标题</h3>
        <p>正文内容</p>
        <p>更多正文内容</p>
        <h3 id="底部信息">底部信息</h3>
      </my-component17>
    </p>
Vue.component('my-component17',{
  template: '<p>' +
         '</p><p>' +
          '<slot></slot>' +
         '</p>' +
         '<p>' +
          '<slot></slot>' +
         '</p>'+
         '<p>' +
          '<slot></slot>' +
         '</p>'+
       '

' }); var app17 = new Vue({   el: '#app17' });

渲染结果为:         

 <p>
        </p><p>
          </p><p>
            </p><h3 id="标题">标题</h3>
          <p> 
            </p><p>正文内容</p> 
            <p>更多正文内容</p> 
          
          <p>
            </p><h3 id="底部信息">底部信息</h3>
          
        
      

 子组件内声明了3 个<s lot>元素,其中在<p class=” main >内的<slot> 没有使用name 特性,它将作为默认slot 出现,父组件没有使用slot 特性的元素与内容都将出现在这里。

如果没有指定默认的匿名slot ,父组件内多余的内容片段都将被抛弃。

四、作用域插槽

作用域插槽是一种特殊的slot ,使用一个可以复用的模板替换己渲染元素。

看一个例子:     

 <p>
      <my-component18>
        <template>
          <p>来自父组件的内容</p>
          <p>{{props.msg}}</p>
        </template>
      </my-component18>
    </p>
Vue.component('my-component18',{
  template: '<p><slot></slot></p>'
});
var app18 = new Vue({
  el: '#app18'
});

观察子组件的模板,在元素上有一个类似props 传递数据给组件的写法msg=” xxx ”,将数据传到了插槽。

父组件中使用了<template>元素,而且拥有一个scope=”props ”的特性,这里的props只是一个临时变量,就像v-for= ” item in items

3.2 名前付きスロット

要素に名前を付けると、複数のコンテンツを配布したり、名前付きスロットを単一のスロットと共存させることができます。 Rrreee染の結果は次のようになります: Rrreee

サブクラスは 3 つの

4. スコープ スロット

スコープ スロットは、レンダリングされた要素を置き換えるために再利用可能なテンプレートを使用する特別なスロットです

🎜例を見てください: 🎜rrreee🎜子コンポーネントのテンプレートにも同様のものがあり、コンポーネントにデータを渡すための props の記述方法は 🎜🎜 です。コンポーネントは

以上がvue コンポーネントを使用してスロットを使用してコンテンツを配布する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何在iPhone上启用“敏感内容警告”并了解其功能如何在iPhone上启用“敏感内容警告”并了解其功能Sep 22, 2023 pm 12:41 PM

特别是在过去十年中,移动设备已成为与朋友和家人分享内容的主要方式。易于访问、易于使用的界面以及实时捕获图像和视频的能力使其成为制作和共享内容的绝佳选择。但是,恶意用户很容易滥用这些工具来转发不需要的敏感内容,这些内容可能不适合查看并未经您的同意。为了防止此类情况发生,iOS17中引入了带有“敏感内容警告”的新功能。让我们来看看它以及如何在iPhone上使用它。新的“敏感内容警告”是什么,它是如何工作的?如上所述,敏感内容警告是一项新的隐私和安全功能,旨在帮助防止用户查看敏感内容,包括iPhone

Microsoft Edge浏览器打开是360导航怎么改-更改打开是360导航的方法Microsoft Edge浏览器打开是360导航怎么改-更改打开是360导航的方法Mar 04, 2024 pm 01:50 PM

怎么更改MicrosoftEdge浏览器打开是360导航的页面呢?其实很简单,那么现在小编就和大家一起分享关于更改MicrosoftEdge浏览器打开是360导航页面的方法,有需要的朋友可以来看看哦,希望可以帮助到大家。打开MicrosoftEdge浏览器。我们看到是下图这种页面。点击右上角的三点图标。点击“设置”。在设置页面的左侧栏里点击“启动时”。点击右侧栏里的图中示意的三点(不要能点击“打开新标签页”),然后点击编辑,将网址改成“0”(或其他无意义的数字)。然后点击“保存”。接下来,选择“

Cheat Engine如何设置中文?Cheat Engine设置中文方法Cheat Engine如何设置中文?Cheat Engine设置中文方法Mar 13, 2024 pm 04:49 PM

  CheatEngine是一款游戏编辑器,能够对游戏的内存进行编辑修改。但是它的默认语言是非中文的,对于很多小伙伴来说比较不方便,那么CheatEngine怎么设置中文呢?今天小编就给大家详细介绍一下CheatEngine设置中文的方法,希望可以帮助到你。  设置方法一  1、双击打开软件,点击左上角的“edit”。  2、接着点击下方选项列表中的“settings”。  3、在打开的窗口界面中,点击左侧栏中的“languages”

Microsoft Edge在哪设置显示下载按钮-Microsoft Edge设置显示下载按钮的方法Microsoft Edge在哪设置显示下载按钮-Microsoft Edge设置显示下载按钮的方法Mar 06, 2024 am 11:49 AM

大家知道MicrosoftEdge在哪设置显示下载按钮吗?下文小编就带来了MicrosoftEdge设置显示下载按钮的方法,希望对大家能够有所帮助,一起跟着小编来学习一下吧!第一步:首先打开MicrosoftEdge浏览器,单击右上角【...】标识,如下图所示。第二步:然后在弹出菜单中,单击【设置】,如下图所示。第三步:接着单击界面左侧【外观】,如下图所示。第四步:最后单击【显示下载按钮】右侧按钮,由灰变蓝即可,如下图所示。上面就是小编为大家带来的MicrosoftEdge在哪设置显示下载按钮的

时空中的绘旅人艾因的日常:常驻内容更新时空中的绘旅人艾因的日常:常驻内容更新Mar 01, 2024 pm 08:37 PM

时空中的绘旅人已经确定在2月29日更新之后,玩家可以和艾因一起去参加露天音乐节,获得与艾因的好感度加成,3月4日将会开启缱绻假日煦色韶光活动,玩家可以提升假日行程等级解锁全新短信和Lofter内容。时空中的绘旅人艾因的日常:常驻内容更新更新2月29日版本后,可体验全新校园日程[参加露天音乐节],跟艾因一起参与可获得好感度加成。3月4日09:30-4月15日05:00,在「缱绻假日·煦色韶光」活动期间提升[假日行程]等级到8级和28级,可分别解锁全新短信和Lofter内容。*新增短信、Lofter

什么是插槽(slot)?聊聊Vue3中插槽的使用方法什么是插槽(slot)?聊聊Vue3中插槽的使用方法Aug 23, 2022 pm 07:57 PM

Vue中的插槽相信使用过Vue的小伙伴或多或少的都用过,但是你是否了解它全部用法呢?本篇文章就为大家带来Vue3中插槽的全部用法来帮助大家查漏补缺。

解析 Solana 的 DEX 布局:Jupiter 是不是生态的未来?解析 Solana 的 DEX 布局:Jupiter 是不是生态的未来?Mar 26, 2024 pm 02:10 PM

来源:深潮TechFlow作为Solana生态中备受瞩目的新兴项目,Jupiter尽管推出时间不长,却已经在DeFi领域中迅速崭露头角。然而,即使在这样快速发展的环境中,经济模型的完善和代币价格的稳定仍然至关重要。缺乏这些支撑,项目很容易陷入恶性循环,最终可能导致其衰落甚至无法为自身维持生机。因此,Jupiter需要不断优化其经济设计,确保代币价格稳定性,以确保项目的长期发展和成功。Solana链在最近一周表现强劲,其代币SOL在二级市场上涨势如虹,而Jupiter的代币$JUP也在过去两周内涨

Vue中使用slot优化组件的扩展性能Vue中使用slot优化组件的扩展性能Jul 17, 2023 pm 03:16 PM

Vue中使用slot优化组件的扩展性能在Vue开发中,组件是构建应用界面的重要模块。一个强大而有效的组件可以提高开发效率和代码复用性。然而,随着应用规模的增大,组件的扩展性往往成为一个挑战。为了解决这个问题,Vue提供了一个强大的功能——slot(插槽)。slot是Vue中一种用于向组件传递内容的机制。通过使用slot,我们可以将代码的灵活性和可重用性进一步

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。