Vue ElementUI表格渲染延遲:如何解決異步請(qǐng)求導(dǎo)致的數(shù)據(jù)顯示問題?
Apr 04, 2025 pm 04:45 PMVue ElementUI表格數(shù)據(jù)渲染延遲及優(yōu)化策略
在Vue和ElementUI項(xiàng)目中,表格數(shù)據(jù)渲染延遲是一個(gè)常見問題。本文將分析一個(gè)案例,該案例中表格部分字段在頁面加載時(shí)無法顯示,只有在打開瀏覽器開發(fā)者工具后才顯示。
問題描述:
一個(gè)使用el-table
組件顯示申請(qǐng)記錄的頁面,需要從后端獲取申請(qǐng)人ID,再通過循環(huán)調(diào)用接口獲取申請(qǐng)人姓名等信息,并動(dòng)態(tài)添加到tableData
中。頁面加載后,申請(qǐng)人姓名等字段缺失,只有打開開發(fā)者工具后才顯示。 原始代碼如下:
async getdata() { await axios.get("http://localhost:10100/apply/getalloutapplypageofgroup", { params: { approvalid: localStorage.getItem("userid"), pn: this.currentpage, ps: this.pagesize } }).then(res => { this.tabledata = res.data.data.records this.total = res.data.data.total }) for (var i in this.tabledata) { await axios.get("http://localhost:10100/user/getusername", { params: { userid: this.tabledata[i].applicantid } }).then(res => { this.tabledata[i].applicantname = res.data.data }) // ... 其他異步請(qǐng)求 ... } }
該代碼在mounted
生命周期中調(diào)用getdata
方法。問題根源在于getdata
函數(shù)中使用了大量的await
關(guān)鍵字,導(dǎo)致同步循環(huán),造成數(shù)據(jù)渲染延遲。打開開發(fā)者工具可能會(huì)意外觸發(fā)Vue更新機(jī)制,從而顯示數(shù)據(jù)。
解決方案:并發(fā)請(qǐng)求與Promise.all
避免同步循環(huán)和多次await
,應(yīng)優(yōu)化代碼,將異步請(qǐng)求改為并發(fā)請(qǐng)求,使用Promise.all
等待所有請(qǐng)求完成后再更新數(shù)據(jù)。改進(jìn)后的代碼如下:
async getData() { const applyData = await axios.get("http://localhost:10100/Apply/getAllOutApplyPageOfGroup", { params: { approvalId: localStorage.getItem("userId"), pn: this.currentPage, ps: this.pageSize } }); this.tableData = applyData.data.data.records; this.total = applyData.data.data.total; const promises = this.tableData.map(item => { return Promise.all([ axios.get("http://localhost:10100/User/getUserName", { params: { userId: item.applicantId } }), axios.get("http://localhost:10100/Chemicals/getChemicalName", { params: { chemicalId: item.chemicalId } }), axios.get("http://localhost:10100/Chemicals/getUnit", { params: { chemicalId: item.chemicalId } }) ]).then(([userNameRes, chemicalNameRes, unitRes]) => { item.applicantName = userNameRes.data.data; item.chemicalName = chemicalNameRes.data.data; item.unit = unitRes.data.data; }); }); await Promise.all(promises); // 等待所有請(qǐng)求完成 this.$forceUpdate();//強(qiáng)制更新視圖 }
通過Promise.all
,并發(fā)執(zhí)行多個(gè)異步請(qǐng)求,顯著提升效率,解決數(shù)據(jù)顯示延遲。 所有數(shù)據(jù)獲取完成后再更新tableData
,并使用this.$forceUpdate()
強(qiáng)制更新視圖,確保數(shù)據(jù)正確顯示在el-table
中。
記住在el-table
中正確綁定tableData
數(shù)據(jù)。 此優(yōu)化策略有效避免了因異步操作導(dǎo)致的渲染延遲問題。
以上是Vue ElementUI表格渲染延遲:如何解決異步請(qǐng)求導(dǎo)致的數(shù)據(jù)顯示問題?的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

幣安(Binance)作為國際領(lǐng)先的區(qū)塊鏈數(shù)字資產(chǎn)交易平臺(tái),為用戶提供了安全、便捷的交易體驗(yàn)。其官方App集成了行情查看、資產(chǎn)管理、幣幣交易及法幣交易等多種核心功能。

歐易(OKX)是一款全球知名的數(shù)字資產(chǎn)綜合服務(wù)平臺(tái),為廣大用戶提供涵蓋現(xiàn)貨、合約、期權(quán)等在內(nèi)的多元化產(chǎn)品和服務(wù)。其官方APP憑借流暢的操作體驗(yàn)和強(qiáng)大的功能集成,成為了許多數(shù)字資產(chǎn)用戶的常用工具。

幣安(Binance)是全球知名的數(shù)字資產(chǎn)交易平臺(tái),為用戶提供安全、穩(wěn)定且豐富的加密貨幣交易服務(wù)。其App設(shè)計(jì)簡潔,功能強(qiáng)大,支持多種交易類型和資產(chǎn)管理工具。

幣安(Binance)是全球知名的數(shù)字資產(chǎn)交易平臺(tái)之一,為廣大用戶提供安全、穩(wěn)定、便捷的加密貨幣交易服務(wù)。通過幣安App,您可以隨時(shí)隨地進(jìn)行市場(chǎng)行情查看、買賣交易及資產(chǎn)管理。

安幣交易所是一款全球知名的數(shù)字資產(chǎn)交易平臺(tái),為用戶提供安全、穩(wěn)定、便捷的加密貨幣交易服務(wù)。通過安幣App,您可以隨時(shí)隨地查看市場(chǎng)行情、管理數(shù)字資產(chǎn)以及進(jìn)行多種幣對(duì)的交易。

直接修改props會(huì)導(dǎo)致單向數(shù)據(jù)流破壞和不可預(yù)測(cè)的行為,應(yīng)使用本地?cái)?shù)據(jù)副本或通過$emit通知父組件更新;2.過度使用Pinia/Vuex會(huì)增加復(fù)雜性,應(yīng)僅將跨組件共享的狀態(tài)如用戶認(rèn)證信息存入全局狀態(tài),UI狀態(tài)應(yīng)保留在組件內(nèi)部;3.忽視Vue的響應(yīng)式限制如動(dòng)態(tài)添加對(duì)象屬性或直接通過索引修改數(shù)組會(huì)導(dǎo)致更新失效,應(yīng)使用Vue.set()(Vue2)或在Vue3中通過展開運(yùn)算符重新賦值;4.未清理定時(shí)器、事件監(jiān)聽器等副作用會(huì)導(dǎo)致內(nèi)存泄漏,應(yīng)在beforeUnmount或onBeforeUnmount中

本文為您提供比安(Binance)最新官方網(wǎng)站的注冊(cè)與登錄入口,并附上詳細(xì)的操作步驟指南。通過本指南,您可以輕松、安全地完成賬戶創(chuàng)建和日常登錄,順利開啟您的數(shù)字資產(chǎn)交易之旅。

安幣(Binance)是全球知名的數(shù)字資產(chǎn)服務(wù)平臺(tái),為用戶提供廣泛的數(shù)字貨幣交易、資產(chǎn)管理等一站式服務(wù)。其App以功能全面、操作便捷和高度的安全性而受到廣大用戶的信賴。
