首頁 web前端 js教程 vue組件使用slot分發內容步驟詳解

vue組件使用slot分發內容步驟詳解

May 25, 2018 pm 03:28 PM
slot 內容 散佈

這次帶給大家vue組件使用slot分發內容步驟詳解,vue組件使用slot分發內容的注意事項有哪些,下面就是實戰案例,一起來看一下。

一、什麼是slot

在使用元件時,我們常常要這樣組合它們:

<app>
 <app-header></app-header>
 <app-footer></app-footer>
</app>
登入後複製

當需要讓元件組合使用,混合父元件的內容與子元件的模板時,就會用到slot , 這個過程叫作內容分發( transclusion )。

注意兩點:

1.< app>元件不知道它的掛載點會有什麼內容。掛載點的內容是由<app >的父組件決定的。

2. 元件很可能有它自己的範本。

props 傳遞資料、events 觸發事件和slot 內容分發就構成了Vue 元件的3 個API 來源,再複雜的元件也是由這3 部分構成的。

 二、作用域

<child-component>
 {{ message }}
</child-component>
登入後複製

這裡的message 就是一個slot ,但它綁定的是父元件的數據,而不是元件<child-component>的數據。

父元件模板的內容是在父元件作用域內編譯,子元件模板的內容是在子元件作用域內編譯。如:

   <p id="app15">
      <child-component v-show="showChild"></child-component>
    </p>
Vue.component('child-component',{
  template: '<p>子组件</p>'
});
var app15 = new Vue({
  el: '#app15',
  data: {
    showChild: true
  }
});
登入後複製

這裡的狀態showChild 綁定的是父元件的數據,如果想在子元件上綁定,那應該是:

    <p id="app15">
      <child-component></child-component>
    </p>
Vue.component('child-component',{
  template: '<p v-show="showChild">子组件</p>',
  data: function(){
    return {
      showChild: true
    }
  }
});
登入後複製

因此, slot 分發的內容,作用域是在父元件上的。

三、slot用法

#3.1 單一slot

##在子元件內使用特殊的<slot>元素就可以為這個子元件開啟一個slot(插槽),在父元件模板裡,插入在子元件標籤內的所有內容將替代子元件的 標籤及它的內容。

 <p id="app16">
      <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 id=”app16”>
  <p>
    <p>分发的内容<p>
    <p>更多分发的内容<p>
  </p>
</p>
登入後複製
 子元件

child-component 的範本內定義了一個<slot>元素,並且用一個<p>作為預設的內容,當父元件沒有使用slot 時,會渲染這段預設的文字;如果寫入了slot, 那就會替換整個<slot> 。

3.2具名slot

給<slot> 元素指定一個name 後可以分發多個內容,具名Slot 可以與單一slot 共存。

  <p id="app17">
      <my-component17>
        <h3 slot="header">标题</h3>
        <p>正文内容</p>
        <p>更多正文内容</p>
        <h3 slot="footer">底部信息</h3>
      </my-component17>
    </p>
Vue.component('my-component17',{
  template: '<p class="container">' +
         '<p class="header">' +
          '<slot name="header"></slot>' +
         '</p>' +
         '<p class="main">' +
          '<slot></slot>' +
         '</p>'+
         '<p class="footer">' +
          '<slot name="footer"></slot>' +
         '</p>'+
       '</p>'
});
var app17 = new Vue({
  el: '#app17'
});
登入後複製
渲染結果為:         

 <p id="app17">
        <p class="container">
          <p class="header">
            <h3>标题</h3></p>
          <p class="main"> 
            <p>正文内容</p> 
            <p>更多正文内容</p> 
          </p>
          <p class="footer">
            <h3>底部信息</h3>
          </p>
        </p>
      </p>
登入後複製
 子元件內宣告了3 個<s lot>元素,其中在<p class=」 main >內的<slotname> ,它將作為預設slot 出現,父元件沒有使用slot 特性的元素與內容都會出現在這裡。

四、作用域插槽

作用域插槽是一種特殊的slot ,使用一個可以重複使用的模板來取代己渲染元素。資料傳到了插槽。 ##,就像v-for= ” item in items

裡面的item 一樣,template 內可以透過臨時變數props存取來自子元件插槽的資料msg 。

下面看下Vue元件中slot的用法

#主要是讓元件的可擴充性更強。 1. 使用匿名slot

2. 給slot加個名字

如果不在有slot的元件裡加入任何標籤,slot什麼都不會顯示的。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

怎麼搭建vue2.0 boostrap專案

怎麼對webpack模組進行熱替換

以上是vue組件使用slot分發內容步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1673
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
如何在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在哪設定顯示下載按鈕的

Python 程式碼變身獨立應用:PyInstaller 的煉金術 Python 程式碼變身獨立應用:PyInstaller 的煉金術 Feb 19, 2024 pm 01:27 PM

PyInstaller是一個開源程式庫,允許開發者將python程式碼編譯為平台無關的自包含可執行檔(.exe或.app)。它透過將Python程式碼、依賴項和支援檔案打包在一起來實現這一目標,從而創建獨立應用程序,無需安裝Python解釋器即可運行。 PyInstaller的優點在於它消除了對Python環境的依賴性,使應用程式可以輕鬆分發和部署給最終用戶。它還提供了建構器模式,使用戶可以自訂應用程式的設定、圖示、資源檔案和環境變數。使用PyInstaller打包Python程式碼安裝PyInstal

Python 應用的終極進化:PyInstaller 的破繭成蝶 Python 應用的終極進化:PyInstaller 的破繭成蝶 Feb 19, 2024 pm 03:27 PM

PyInstaller是一個革命性的工具,它賦予python應用程式超越其原始腳本形態的能力。透過將Python程式碼編譯成獨立的可執行文件,PyInstaller解鎖了程式碼分發、部署和維護的新境界。從單一腳本到強大應用程式以往,Python腳本只存在於特定的Python環境中。分發這樣的腳本需要使用者安裝Python和必要的函式庫,這是一個費時且繁瑣的過程。 PyInstaller引入了打包的概念,將Python程式碼與所有必要的依賴項組合成一個單獨的執行檔。代碼打包的藝術PyInstaller的工

時空中的繪旅人艾因的日常:常駐內容更新 時空中的繪旅人艾因的日常:常駐內容更新 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

解析 Solana 的 DEX 佈局:Jupiter 是不是生態的未來? 解析 Solana 的 DEX 佈局:Jupiter 是不是生態的未來? Mar 26, 2024 pm 02:10 PM

資料來源:深潮TechFlow作為Solana生態中備受矚目的新興項目,Jupiter儘管推出時間不長,卻已經在DeFi領域中迅速嶄露頭角。然而,即使在這樣快速發展的環境中,經濟模型的完善和代幣價格的穩定仍然至關重要。缺乏這些支撐,項目很容易陷入惡性循環,最終可能導致其衰落甚至無法為自身維持生機。因此,Jupiter需要不斷優化其經濟設計,確保代幣價格穩定性,以確保專案的長期發展和成功。 Solana鏈在最近一周表現強勁,其代幣SOL在二級市場上漲勢如虹,而Jupiter的代幣$JUP也在過去兩週內漲

See all articles