欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3中Teleport和Suspense的具體使用

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

一、Teleport

Vue.js 3.0 的新功能之一是 Teleport。因?yàn)橛袝r(shí),你可能需要將組件的一部分渲染到 DOM 樹中的一個(gè)不同位置,而不是作為組件的直接子節(jié)點(diǎn)渲染。這就是Teleport的用途。

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

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

<teleport to="body">
  <div class="modal">
    <!-- 具體內(nèi)容 -->
  </div>
</teleport>

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

以上面的模態(tài)框?yàn)槔?,一般的寫法可能是?/p>

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

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

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

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

二、Suspense

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

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

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

下面是一個(gè)使用示例:

<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 是一個(gè)異步組件。當(dāng)這個(gè)組件正在加載時(shí),Suspense 會(huì)自動(dòng)切換到fallback插槽,并顯示 “Loading…”。當(dāng)組件加載完成后,Suspense 則會(huì)切換回default插槽,顯示加載完成的組件。

Suspense 能讓我們更方便地控制異步組件的加載狀態(tài),讓代碼看起來更加清晰,使我們能夠?qū)⒏嗟木性谔幚順I(yè)務(wù)邏輯上。

三、nextTick

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

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

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

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

舉例來說:

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;
? ? ? });
? ? },
? },
? // ...
})

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

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

相關(guān)文章

  • element表格翻頁第2頁從1開始編號(hào)(后端從0開始分頁)

    element表格翻頁第2頁從1開始編號(hào)(后端從0開始分頁)

    這篇文章主要介紹了element表格翻頁第2頁從1開始編號(hào)(后端從0開始分頁),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 關(guān)于Vue中的計(jì)算屬性和監(jiān)聽屬性詳解

    關(guān)于Vue中的計(jì)算屬性和監(jiān)聽屬性詳解

    這篇文章主要介紹了關(guān)于Vue中的計(jì)算屬性和監(jiān)聽屬性詳解,Vue.js模板內(nèi)的表達(dá)式非常便利,但是設(shè)計(jì)它們的初衷是用于簡單運(yùn)算的,在模板內(nèi)放入過長的或復(fù)雜的邏輯時(shí),會(huì)讓模板過重且難以維護(hù),需要的朋友可以參考下
    2023-05-05
  • vue配置文件實(shí)現(xiàn)代理v2版本的方法

    vue配置文件實(shí)現(xiàn)代理v2版本的方法

    這篇文章主要介紹了vue配置文件實(shí)現(xiàn)代理v2版本的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • vue項(xiàng)目啟動(dòng)端口更改的實(shí)現(xiàn)

    vue項(xiàng)目啟動(dòng)端口更改的實(shí)現(xiàn)

    在Vue前端項(xiàng)目中,可以通過修改配置文件來指定啟動(dòng)的端口號(hào),本文就來介紹 一下vue項(xiàng)目啟動(dòng)端口更改的實(shí)現(xiàn),感興趣的可以了解一下
    2023-10-10
  • Vuex數(shù)據(jù)持久化的兩種方式:手動(dòng)存儲(chǔ)和vuex-persistedstate插件詳解

    Vuex數(shù)據(jù)持久化的兩種方式:手動(dòng)存儲(chǔ)和vuex-persistedstate插件詳解

    這篇文章主要介紹了Vuex數(shù)據(jù)持久化的兩種方式:手動(dòng)存儲(chǔ)和vuex-persistedstate插件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 在vue中解決提示警告 for循環(huán)報(bào)錯(cuò)的方法

    在vue中解決提示警告 for循環(huán)報(bào)錯(cuò)的方法

    今天小編就為大家分享一篇在vue中解決提示警告 for循環(huán)報(bào)錯(cuò)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vuex中Modules的使用詳解

    vuex中Modules的使用詳解

    本文主要介紹了vuex中Modules的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Vue中的el-date-picker時(shí)間選擇器的使用實(shí)例詳解

    Vue中的el-date-picker時(shí)間選擇器的使用實(shí)例詳解

    el-date-picker是Element UI框架中提供的日期選擇器組件,它支持單個(gè)日期、日期范圍、時(shí)間、日期時(shí)間等多種選擇方式,本文給大家介紹Vue中的el-date-picker時(shí)間選擇器的使用,感興趣的朋友一起看看吧
    2023-10-10
  • vue本地構(gòu)建熱更新卡頓的問題“75?advanced?module?optimization”完美解決方案

    vue本地構(gòu)建熱更新卡頓的問題“75?advanced?module?optimization”完美解決方案

    這篇文章主要介紹了vue本地構(gòu)建熱更新卡頓的問題“75?advanced?module?optimization”解決方案,每次熱更新都會(huì)卡在?"75?advanced?module?optimization"?的地方不動(dòng)了,如何解決這個(gè)問題呢,下面小編給大家?guī)砹私鉀Q方案,需要的朋友可以參考下
    2022-08-08
  • 基于Vue中的父子傳值問題解決

    基于Vue中的父子傳值問題解決

    這篇文章主要介紹了基于Vue中的父子傳值問題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評(píng)論