vue3中實現(xiàn)異步組件的方法實例
使用場景一:當(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)文章
Vue3之父子組件異步props數(shù)據(jù)的傳值方式
這篇文章主要介紹了Vue3之父子組件異步props數(shù)據(jù)的傳值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無法輸入的問題
這篇文章主要介紹了vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無法輸入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue?el-table實現(xiàn)動態(tài)添加行和列具體代碼
最近遇到一個動態(tài)增加行和列的需求,所以這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue?el-table實現(xiàn)動態(tài)添加行和列的相關(guān)資料,需要的朋友可以參考下2023-09-09使用Webpack 搭建 Vue3 開發(fā)環(huán)境過程詳解
這篇文章主要介紹了使用Webpack 搭建 Vue3 開發(fā)環(huán)境過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07