国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3中實現(xiàn)異步組件

這篇具有很好參考價值的文章主要介紹了vue3中實現(xiàn)異步組件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

假設(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>

打開頁面:

vue3中實現(xiàn)異步組件

?

如果一個頁面中的內(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元素是否進(jìn)入視窗,值為true或flase
    console.log(isIntersecting);
    if (isIntersecting) {
      targetIsVisible.value = isIntersecting     //將isIntersecting賦值給開關(guān),即表示進(jìn)入視窗就顯示該dom元素
    }
  },
)

</script>

vue3中實現(xiàn)異步組件?

vue3中實現(xiàn)異步組件?

?

?

這樣就實現(xiàn)了異步加載C組件,在頁面視窗滾動到C組件時才會加載C組件。文章來源地址http://www.zghlxwxcb.cn/news/detail-461424.html

到了這里,關(guān)于vue3中實現(xiàn)異步組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue3 使用 mitt 插件實現(xiàn)非父子組件傳值

    介紹 : mitt 是一個 JavaScript 庫,用于實現(xiàn)事件的訂閱和發(fā)布 1、安裝 2、新建 utils/eventBus.ts 文件 3、使用

    2024年02月09日
    瀏覽(26)
  • vue3 使用defineAsyncComponent與component標(biāo)簽實現(xiàn)動態(tài)渲染組件

    vue3 使用defineAsyncComponent與component標(biāo)簽實現(xiàn)動態(tài)渲染組件

    內(nèi)容有些啰嗦,內(nèi)容記載了當(dāng)時遇到了bug以及解決問題的思路。 業(yè)務(wù)場景簡述: 前端做配置化組件,通過url內(nèi)的唯一標(biāo)識,請求后端sql 哪取頁面配置信息,前端通過配置信息動態(tài)渲染查詢表單,導(dǎo)出、表格,toolbar以及動態(tài)彈窗;該動態(tài)渲染組件的功能,就是渲染的toolbar內(nèi)

    2024年02月05日
    瀏覽(16)
  • vue3探索——使用ref與$parent實現(xiàn)父子組件間通信

    在vue3中,可以使用vue3的API defineExpose() 函數(shù)結(jié)合 ref 或者 $parent ,實現(xiàn)父子組件數(shù)據(jù)的傳遞。 子組件:通過 defineExpose() 函數(shù),向外暴露響應(yīng)式數(shù)據(jù)或者方法 父組件:通過 ref 獲取子組件實例,進(jìn)而獲取子組件暴露的響應(yīng)式數(shù)據(jù)或方法 ?? 你沒看錯!這里的 ref 就是經(jīng)常用來定

    2024年02月10日
    瀏覽(25)
  • Vue.js 中的異步組件是什么?如何使用異步組件?

    在 Vue.js 中,異步組件是一種延遲加載組件的方式,可以大大提高應(yīng)用程序的性能和加載速度。本文將介紹 Vue.js 中異步組件的概念、優(yōu)勢以及如何使用異步組件。 在傳統(tǒng)的 Vue.js 開發(fā)中,組件是在應(yīng)用程序啟動時就立即加載的。這種方式雖然簡單,但是會導(dǎo)致應(yīng)用程序的初始

    2024年02月12日
    瀏覽(35)
  • 【Vue技巧】Vue2和Vue3組件上使用v-model的實現(xiàn)原理

    ChatGPT4.0國內(nèi)站點,支持GPT4 Vision 視覺模型:海鯨AI 在Vue中, v-model 是一個語法糖,用于在輸入框、選擇框等表單元素上創(chuàng)建雙向數(shù)據(jù)綁定。當(dāng)你在自定義組件中實現(xiàn) v-model 功能時,你需要理解它背后的原理: v-model 實際上是一個屬性和一個事件的簡寫。 在 Vue 2.x 中, v-mode

    2024年01月15日
    瀏覽(30)
  • vue3中使用ant-design-vue的layout組件實現(xiàn)動態(tài)導(dǎo)航欄功能(1~2級)

    vue3中使用ant-design-vue的layout組件實現(xiàn)動態(tài)導(dǎo)航欄功能(1~2級)

    目錄 0 前言 1 準(zhǔn)備工作 1.1 安裝ant-design-vue 1.2 安裝圖標(biāo)組件包 2 選擇組件 3 路由文件 4 Vue導(dǎo)航頁面 5 最終效果 ????????最近在自己搞一個前后端小項目,前端想使用ant-design-vue的layout組件實現(xiàn)動態(tài)導(dǎo)航欄和面包屑,但是網(wǎng)上的資料較少,所以我就自己整合實現(xiàn)了一下,在此

    2024年02月15日
    瀏覽(27)
  • uniapp vue3中使用webview在微信小程序中實現(xiàn)雙向通訊

    uniapp vue3中使用webview在微信小程序中實現(xiàn)雙向通訊

    直接上圖,注意事項是這里 官網(wǎng)鏈接: https://uniapp.dcloud.net.cn/component/web-view.html 傳遞方法的話好像只能通過url來傳,其它方式不支持,,,我這個參數(shù)沒做處理,用的話記得把參數(shù)做一下處理 也就是說傳遞數(shù)據(jù)之后需要 uni.redirectTo({ url: \\\'/pages/testFabric/index\\\' }) 特定時機(jī),當(dāng)然用

    2024年04月13日
    瀏覽(22)
  • vue2與vue3項目中,分別使用element組件的message消息提示只出現(xiàn)一次的實現(xiàn)

    vue2與vue3項目中,分別使用element組件的message消息提示只出現(xiàn)一次的實現(xiàn)

    比如出現(xiàn)以上現(xiàn)象,想要讓上一次提示沒有結(jié)束,下一次提示不會出現(xiàn)就可以用以下方法解決 解決后的現(xiàn)象一:上一次提示框顯示后,提示框出現(xiàn)的提示時間沒有結(jié)束,再次點擊,提示框不會有反應(yīng),在該提示的時間內(nèi)一只顯示,下一次提示不會出現(xiàn),直到該提示的時間過了

    2024年02月02日
    瀏覽(28)
  • VUE3+ThreeJs實現(xiàn)3D全景場景,可自由旋轉(zhuǎn)視角

    VUE3+ThreeJs實現(xiàn)3D全景場景,可自由旋轉(zhuǎn)視角

    three.js是一個用于在Web上創(chuàng)建三維圖形的JavaScript庫。它可以用于創(chuàng)建各種類型的三維場景,包括游戲、虛擬現(xiàn)實、建筑和產(chǎn)品可視化等。three.js提供了許多功能和特性,包括3D渲染、光照、材質(zhì)、幾何形狀、動畫、交互和相機(jī)控制等。使用three.js,開發(fā)人員可以輕松地創(chuàng)建復(fù)雜

    2024年02月11日
    瀏覽(24)
  • vue3 一個基于pinia簡單易懂的系統(tǒng)權(quán)限管理實現(xiàn)方案,vue-router動態(tài)路由異步問題解決

    vue3 一個基于pinia簡單易懂的系統(tǒng)權(quán)限管理實現(xiàn)方案,vue-router動態(tài)路由異步問題解決

    作為項目經(jīng)驗稀少的vue開發(fā)者來說,在關(guān)鍵技術(shù)點上的經(jīng)驗不多,我希望通過我的思想和實踐,把好的東西分享在這里,目的是進(jìn)一步促進(jìn)技術(shù)交流。項目即將完成,權(quán)限是最后的收尾工作,好的權(quán)限實現(xiàn)方案,可以讓我們沒有后顧之憂,也可以提升項目的運(yùn)行速度。 在開發(fā)

    2023年04月08日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包