最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vue3中Teleport的使用

 更新時間:2021年05月21日 10:54:56   作者:前端先鋒  
門戶(Portal)的概念是Vue3的新功能之一,也就是將模板 HTML 移至 DOM 的不同部分的方法。Portal 是 React 中的常見功能,Vue2 的 portal-vue  庫也提供了相似的功能。在 Vue3 中用 Teleport 對這個概念提供了原生支持。本文將介紹Teleport的相關(guān)用法

在本文中,我們將介紹:

  • Teleport 的目的
  • Teleport 的例子
  • 一些很有意思的代碼交互

Teleport 的目的

首先是什么時候以及使用這個 Teleport 功能。

在開發(fā)較大的 Vue 項目時應(yīng)該以可重用的邏輯去組織代碼。但是當處理某些類型的組件(如模式、通知或工具提示)時,模板 HTML 的邏輯可能不會和我們希望渲染元素處于相同的文件中。

實際上在大多數(shù)情況下,與 Vue 的 DOM 完全分開處理相比,處理這些元素要容易得多。因為嵌套組件的位置、z-index 和樣式等這些東西,可能由于需要處理其所有父對象的作用域而變得棘手。

而這些正是 Teleport 的用武之地。我們可以在邏輯所在的組件中編寫模板代碼,因為這樣我們可以使用組件的數(shù)據(jù)或 props。

如果不用 Teleport,我們還必須擔心事件傳播會把邏輯從子組件傳遞給 DOM 樹。

Teleport 是怎樣工作的

假設(shè)有一些子組件,我們想在其中觸發(fā)彈出的通知。正如剛剛討論的那樣,如果將通知以完全獨立的 DOM 樹渲染,而不是 Vue 的根 #app 元素,會更加簡單。

首先編輯 index.html 并在 </body> 之前添加一個 <div>。

//index.html
<body>
   <div id="app"></div>
   <div id='portal-target'></div>
</body>

接下來創(chuàng)建觸發(fā)渲染通知的組件。

//VuePortals.vue
<template>
  <div class='portals'>
    <button @click='showNotification'> Trigger Notification! </button>
    <teleport to='#portal-target'>
      <div class='notification'>
        This is rendering outside of this child component!
      </div>
    </teleport>
  </div>
</template>

<script>
import { ref } from 'vue'
export default {
  setup () {
    const isOpen = ref(false)

    var closePopup

    const showNotification = () => {
      isOpen.value = true

      clearTimeout(closePopup)

      closePopup = setTimeout(() => {
        isOpen.value = false
      }, 2000)
    }

    return {
      isOpen,
      showNotification
    }
  }
}
</script>

<style scoped>
  .notification {
    font-family: myriad-pro, sans-serif;
    position: fixed;
    bottom: 20px;
    left: 20px;
    width: 300px;
    padding: 30px;
    background-color: #fff;
  }
</style>

在這代碼段中,按下按鈕時,將渲染通知 2 秒鐘。但是我們的主要目標是用 Teleport 獲取通知并在 VUE 程序外部渲染。

如你所見,Teleport 有一個必填屬性:to

to 屬性使用有效的 DOM 查詢字符串,它可以是:

  • 元素的 ID
  • 元素的類
  • 數(shù)據(jù)選擇器
  • 響應(yīng)查詢字符串

由于我們在 #portal-target 中傳遞了代碼,所以 Vue 程序?qū)⒄业轿覀儼?index.html 中的 #portal-target div,它會傳送門戶中的所有代碼并將其渲染在該 div 中。

下面是結(jié)果:

檢查元素并查看 DOM,可以很清楚地了解都發(fā)生了什么。

我們可以使用 VuePortals 組建中的所有邏輯,但是需要告訴我們的項目渲染在其他地方的哪個模板代碼。

以上就是詳解Vue3中的Teleport的詳細內(nèi)容,更多關(guān)于Vue3 中的Teleport的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 創(chuàng)建nuxt.js項目流程圖解

    創(chuàng)建nuxt.js項目流程圖解

    Nuxt.js是創(chuàng)建Universal Vue.js應(yīng)用程序的框架。它的主要范圍是UI渲染,同時抽象出客戶端/服務(wù)器分布。我們的目標是創(chuàng)建一個足夠靈活的框架,以便您可以將其用作主項目庫或基于Node.js的當前項目。
    2020-03-03
  • Vue build過程取消console debugger控制臺信息輸出方法詳解

    Vue build過程取消console debugger控制臺信息輸出方法詳解

    這篇文章主要為大家介紹了Vue build過程取消console debugger控制臺信息輸出方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • vue腳手架搭建項目的兼容性配置詳解

    vue腳手架搭建項目的兼容性配置詳解

    這篇文章主要介紹了vue腳手架搭建項目的兼容性配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue fetch中的.then()的正確使用方法

    vue fetch中的.then()的正確使用方法

    這篇文章主要介紹了vue fetch中的.then()的正確使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue3解析markdown并實現(xiàn)代碼高亮顯示的詳細步驟

    Vue3解析markdown并實現(xiàn)代碼高亮顯示的詳細步驟

    Vue的markdown解析庫有很多,如markdown-it、vue-markdown-loader、marked、vue-markdown等,這篇文章主要介紹了Vue3解析markdown并實現(xiàn)代碼高亮顯示,需要的朋友可以參考下
    2022-07-07
  • vue3子組件數(shù)據(jù)無法更新問題

    vue3子組件數(shù)據(jù)無法更新問題

    這篇文章主要介紹了vue3子組件數(shù)據(jù)無法更新問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中的data為什么是個函數(shù)而不是對象詳解

    vue中的data為什么是個函數(shù)而不是對象詳解

    這篇文章主要介紹了vue中的data為什么是個函數(shù)而不是對象問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue中cookies的使用方式

    vue中cookies的使用方式

    這篇文章主要介紹了vue中cookies的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue項目打包:修改dist文件名方式

    vue項目打包:修改dist文件名方式

    這篇文章主要介紹了vue項目打包:修改dist文件名方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue axios 在頁面切換時中斷請求方法 ajax

    vue axios 在頁面切換時中斷請求方法 ajax

    下面小編就為大家分享一篇vue axios 在頁面切換時中斷請求方法 ajax,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論

确山县| 罗定市| 时尚| 田林县| 伊宁县| 衡阳市| 陆良县| 安塞县| 沭阳县| 杨浦区| 包头市| 博客| 志丹县| 乐都县| 鞍山市| 卓资县| 锡林浩特市| 永胜县| 巴中市| 襄城县| 东宁县| 昌吉市| 拉萨市| 连城县| 靖州| 尖扎县| 潢川县| 邵东县| 常熟市| 秦安县| 西畴县| 固阳县| 荥经县| 山西省| 岑溪市| 如皋市| 蒲江县| 精河县| 鄂伦春自治旗| 枣强县| 上栗县|