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

vue3中Teleport和Suspense的具體使用

 更新時間:2023年07月26日 10:45:17   作者:jieyucx  
本文主要介紹了vue3中Teleport和Suspense的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、Teleport

Vue.js 3.0 的新功能之一是 Teleport。因為有時,你可能需要將組件的一部分渲染到 DOM 樹中的一個不同位置,而不是作為組件的直接子節(jié)點渲染。這就是Teleport的用途。

例如,模態(tài)對話框、提示、通知等都可能使用 Teleport。通常情況下,你可能想要將這些內容添加到應用的根或者 body 標簽下,而不是嵌套在深層的 UI 結構里。Vue 3 中的 Teleport 提供了這樣的機會,就是不管你的組件在哪里,你都可以將其子組件轉移到DOM的任何位置。

在模板中,Teleport 的使用方法如下:

<teleport to="body">
  <div class="modal">
    <!-- 具體內容 -->
  </div>
</teleport>

'body' 是要傳送組件的目標元素的選擇器。你可以用任何有效的 CSS 選擇器替換它。

以上面的模態(tài)框為例,一般的寫法可能是:

<div class="parent">
   <div class="child">
      <div class="modal" v-if="showModal">
        I am a modal!
      </div>
   </div>
</div>

但如果使用teleport,就可以將modal獨立出來:

<div class="parent">
   <div class="child">
         <teleport to="body">
          <div class="modal" v-if="showModal">
            I am a modal!
          </div>
      </teleport>
   </div>
</div>

這樣,無論在DOM樹的何處調用模態(tài)框,模態(tài)框始終會被渲染到 body 元素下,這可以避免由于 CSS層疊上下文和 z-index 問題造成的樣式問題。

二、Suspense

<Suspense> 是 Vue 3 中的一個新特性,它能夠處理組件中的異步依賴并在等待過程中提供備用內容。

當我們使用異步組件時,組件需要一些時間來加載。在加載完成之前,我們通常會向用戶展示一些加載狀態(tài)。以前,我們需要在組件內部自己處理這個邏輯。但是現(xiàn)在,有了<Suspense>,我們可以將這個邏輯提升到組件外部。

Suspense 組件有兩個插槽: default 插槽和 fallback 插槽。default 插槽用于放置那些可能含有異步依賴的組件,而 fallback 插槽則用于展示加載狀態(tài)。

下面是一個使用示例:

<template>
? <Suspense>
? ? <template v-slot:default>
? ? ? <Child />
? ? </template>
? ? <template v-slot:fallback>
? ? ? <div>Loading...</div>
? ? </template>
? </Suspense>
</template>
<script>
// import Child from './components/Child'//靜態(tài)引入
?? ?import {defineAsyncComponent} from 'vue'?
?? ?const Child = defineAsyncComponent(()=>import('./components/Child')) //異步引入
?? ?export default {
?? ??? ?name:'App',
?? ??? ?components:{Child},
?? ?}
</script>

在以上代碼中,Child 是一個異步組件。當這個組件正在加載時,Suspense 會自動切換到fallback插槽,并顯示 “Loading…”。當組件加載完成后,Suspense 則會切換回default插槽,顯示加載完成的組件。

Suspense 能讓我們更方便地控制異步組件的加載狀態(tài),讓代碼看起來更加清晰,使我們能夠將更多的精力集中在處理業(yè)務邏輯上。

三、nextTick

$nextTick 是 Vue.js 提供的一個全局API,它用于延遲執(zhí)行一段代碼,延遲到下一次 DOM 更新循環(huán)之后。這在修改數(shù)據(jù)之后立即操作 DOM 結構時非常有用。

使用 $nextTick 的基本方式如下:

this.someData = 'new value'
this.$nextTick(function () {
  // DOM 更新后的代碼
})

例如,想象一下我們有一個 Vue.js 組件,它有一個列表。點擊一個按鈕將在列表中添加一個新的 item,然后我們想要滾動到這個新創(chuàng)建的 item。如果我們不使用 $nextTick,DOM可能會在我們嘗試訪問新元素之前還沒有被更新。

舉例來說:

new Vue({
? // ...
? data: {
? ? items: ['item 1', 'item 2', 'item 3'],
? },
? methods: {
? ? addItem() {
? ? ? this.items.push(`item ${this.items.length + 1}`);
? ? ? this.$nextTick(() => {
? ? ? ? const list = this.$el.querySelector('ul');
? ? ? ? list.scrollTop = list.scrollHeight;
? ? ? });
? ? },
? },
? // ...
})

在這個例子中,我們首先更新了 items 數(shù)據(jù),然后使用 $nextTick 等待 Vue.js 更新 DOM。當回調函數(shù)被調用時,我們知道新的 item 已經被添加到了 DOM,然后我們滾動列表確保新 item 可以被用戶看到。如果我們沒有使用 $nextTick,list.scrollHeight 可能不會包含新 item,所以滾動操作可能不會如我們預期的那樣工作。

到此這篇關于vue3中Teleport和Suspense的具體使用的文章就介紹到這了,更多相關vue3 Teleport Suspense內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue打包后不同版本詳細解析

    Vue打包后不同版本詳細解析

    vue項目打包是我們日常經常遇到的,下面這篇文章主要給大家介紹了關于Vue打包后不同版本詳細解析的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • vue3觸發(fā)父組件兩種寫法

    vue3觸發(fā)父組件兩種寫法

    這篇文章主要介紹了vue3觸發(fā)父組件兩種寫法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Vue.js的計算屬性computed詳解

    Vue.js的計算屬性computed詳解

    文章介紹了Vue.js中的計算屬性(computed properties),解釋了它們的基本概念、語法、優(yōu)勢以及應用場景,文章通過有趣的示例展示了計算屬性在不同場景下的應用,如計算全名、計算列表的總和和計算對象的屬性,感興趣的朋友一起看看吧
    2025-03-03
  • vue3 :deep()的使用教程

    vue3 :deep()的使用教程

    對應前端小白來說,一看到:deep()這些模式的用法就不理解是啥意思,下面簡單介紹一下:deep()是什么以及如何使用,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Vue3父子組件互調方法的實現(xiàn)

    Vue3父子組件互調方法的實現(xiàn)

    本文主要介紹了Vue3父子組件互調方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Vuejs第六篇之Vuejs與form元素實例解析

    Vuejs第六篇之Vuejs與form元素實例解析

    本文通過實例給大家詳細介紹了Vuejs與form元素的相關知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 簡述vue中的config配置

    簡述vue中的config配置

    這篇文章主要介紹了vue中的config配置 ,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • tdesign vue初始化組件源碼解析

    tdesign vue初始化組件源碼解析

    這篇文章主要為大家介紹了tdesign vue初始化組件源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • vueRouter--matcher之動態(tài)增減路由方式

    vueRouter--matcher之動態(tài)增減路由方式

    這篇文章主要介紹了vueRouter--matcher之動態(tài)增減路由方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • ArcGis?API?for?js在vue.js中的使用示例詳解

    ArcGis?API?for?js在vue.js中的使用示例詳解

    這篇文章主要為大家介紹了ArcGis?API?for?js在vue.js中的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

花莲市| 丰镇市| 荆州市| 西青区| 宁安市| 灵宝市| 新田县| 南和县| 永康市| 彭泽县| 休宁县| 治县。| 桃园县| 华宁县| 二连浩特市| 晋中市| 太原市| 阿克苏市| 区。| 霍林郭勒市| 崇义县| 禹城市| 汨罗市| 团风县| 宣汉县| 平原县| 迁安市| 屯昌县| 平塘县| 晋江市| 庆城县| 娄底市| 阳高县| 尖扎县| 弥渡县| 沙坪坝区| 宣城市| 泾川县| 龙井市| 太保市| 南汇区|