亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue3中實現(xiàn)異步組件的方法實例

 更新時間:2023年06月07日 15:25:13   作者:前端小顧  
前端開發(fā)經(jīng)常遇到異步的問題,請求函數(shù)、鏈接庫等,下面這篇文章主要給大家介紹了關(guān)于vue3中實現(xiàn)異步組件的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

使用場景一:當(dāng)組件進入視窗時再進行加載

假設(shè)頁面中有三個組件A、B、C

C組件中有一張圖片

<template>
  <div class="A">
    <A></A>
  </div>
  <div class="B">
    <B></B>
  </div>
  <div>
    <C></C>
  </div>
</template>
 
<script setup>
import A from './components/A.vue'
import B from './components/B.vue'
import C from './components/C.vue'
 
</script>

打開頁面:

如果一個頁面中的內(nèi)容非常多,用戶再首次打開時并沒有瀏覽到下方的內(nèi)容,但頁面必須加載完下方的內(nèi)容才會顯示,這無疑非常影響性能

接下來我們做一些調(diào)整

defineAsyncComponent

創(chuàng)建一個只有在需要時才會加載的異步組件。

 defineAsyncComponent是vue3提供的內(nèi)置api。用于異步加載組件

但是僅靠這個api并不能完成我們所需要的功能

這里我們還需要借助vueUse中的一個api 

首先我們需要安裝一下vueUse的依賴

npm i @vueuse/core

我們需要使用vueUse中的useIntersectionObserver 

 安裝完成后來修改一下我們的代碼:

<template>
  <div class="A">
    <A></A>
  </div>
  <div class="B">
    <B></B>
  </div>
  <div ref="target">
    <C v-if="targetIsVisible"></C>
  </div>
</template>
 
<script setup>
import A from './components/A.vue'
import B from './components/B.vue'
import { defineAsyncComponent, ref } from 'vue';
import { useIntersectionObserver } from '@vueuse/core'
 
const C = defineAsyncComponent(() =>           //異步引入組件
  import('./components/C.vue')
)
const target = ref(null)              //獲取需要操作的dom元素
const targetIsVisible = ref(false)   //定義一個dom元素顯示與隱藏開關(guān)
 
const { stop } = useIntersectionObserver(       //定義一個函數(shù)用于控制
  target,
  ([{ isIntersecting }]) => {                 //這里的isIntersecting表示的是dom元素是否進入視窗,值為true或flase
    console.log(isIntersecting);
    if (isIntersecting) {
      targetIsVisible.value = isIntersecting     //將isIntersecting賦值給開關(guān),即表示進入視窗就顯示該dom元素
    }
  },
)
 
</script>

這樣就實現(xiàn)了異步加載C組件,在頁面視窗滾動到C組件時才會加載C組件。

總結(jié)

到此這篇關(guān)于vue3中實現(xiàn)異步組件的文章就介紹到這了,更多相關(guān)vue3實現(xiàn)異步組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vuejs從數(shù)組中刪除元素的示例代碼

    Vuejs從數(shù)組中刪除元素的示例代碼

    這篇文章主要介紹了Vuejs從數(shù)組中刪除元素的示例代碼,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • vue 彈框產(chǎn)生的滾動穿透問題的解決

    vue 彈框產(chǎn)生的滾動穿透問題的解決

    這篇文章主要介紹了vue 彈框產(chǎn)生的滾動穿透問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3之父子組件異步props數(shù)據(jù)的傳值方式

    Vue3之父子組件異步props數(shù)據(jù)的傳值方式

    這篇文章主要介紹了Vue3之父子組件異步props數(shù)據(jù)的傳值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無法輸入的問題

    vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無法輸入的問題

    這篇文章主要介紹了vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無法輸入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue?el-table實現(xiàn)動態(tài)添加行和列具體代碼

    vue?el-table實現(xiàn)動態(tài)添加行和列具體代碼

    最近遇到一個動態(tài)增加行和列的需求,所以這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue?el-table實現(xiàn)動態(tài)添加行和列的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • vue項目下,如何用命令直接修復(fù)ESLint報錯

    vue項目下,如何用命令直接修復(fù)ESLint報錯

    這篇文章主要介紹了vue項目下,如何用命令直接修復(fù)ESLint報錯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 淺析Vue.js 中的條件渲染指令

    淺析Vue.js 中的條件渲染指令

    這篇文章主要介紹了Vue.js 中的條件渲染指令,Vue.js 中的條件渲染指令可以根據(jù)表達式的值,來決定在 DOM 中是渲染還是銷毀元素或組件。本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 使用Webpack 搭建 Vue3 開發(fā)環(huán)境過程詳解

    使用Webpack 搭建 Vue3 開發(fā)環(huán)境過程詳解

    這篇文章主要介紹了使用Webpack 搭建 Vue3 開發(fā)環(huán)境過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue.js移動數(shù)組位置,同時更新視圖的方法

    vue.js移動數(shù)組位置,同時更新視圖的方法

    下面小編就為大家分享一篇vue.js移動數(shù)組位置,同時更新視圖的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue瀑布流組件實現(xiàn)上拉加載更多

    vue瀑布流組件實現(xiàn)上拉加載更多

    這篇文章主要為大家詳細(xì)介紹了vue瀑布流組件實現(xiàn)上拉加載更多,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論