教你如何解決el-table巢狀el-popover處理卡頓問題
導讀 | 本文主要介紹了el-table巢狀el-popover處理卡頓的解決,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧 |
? 罪魁禍首
一個常見的場景是在表格行內以el-popover的形式對行內資訊進行一些業務操作。在表格分頁10條、20條的情況下頁面執行良好,但是在分頁400條的時候會出現肉眼可見的卡頓。原因是表格渲染的popover元件太多了,一行如果至少3個popover元件,那麼400行至少就得渲染1200個了。下面就是導致卡頓的通常寫法:
< el-table-column label="操作"> < template #default="{ row }"> < el-button class="button-main button-h-28"> 透過 < popover> < div @click="handleLog(row)">檢視日誌 < /popover> < /template> < /el-table-column>
? 解決方法
el-popover提供了一個虛擬觸發的功能,可以將觸發內容和下拉內容分開,那這樣就可以只用一個popover元件去涵蓋所有需要用到的場景。 像這個例子:
< template> < el-table :date="data"> < el-table-column label="稽核語句" min-width="150"> < template #default="{ row }"> < template v-for="(item, index) in row.childBOList" :key="item.clause"> < div> < div :ref="el => (refMap[item.clause] = el)" @click="handleRef(refMap[item.clause], item, -1)" > < !-- 觸發內容1 --> < /div> < /div> < /template> < /template> < /el-table-column> < el-table-column label="情感打標結果" min-width="150"> < template #default="{ row }"> < div> < div :ref="ref => (refMap[row.commentId] = ref)" @click="handleRef(refMap[row.commentId], row, 0)" > < !-- 觸發內容2 --> < /div> < /div> < /template> < /el-table-column> < el-table-column label="操作" min-width="150"> < template #default="{ row }"> < div> < div :ref="ref => (refMap[`${row.commentId}Check`] = ref)"> < !-- 觸發內容3 --> < /div> < /div> < /template> < /el-table-column> < /el-table> < el-popover v-model:visible="visiblePopover" :virtual-ref="tempRef" virtual-triggering :width="popoverWidth" > < template v-if="popoverType === -1"> < !-- 業務邏輯1 --> < /template> < template v-else-if="popoverType === 0"> < !-- 業務邏輯2 --> < /template> < template v-else> < !-- 業務邏輯3 --> < /template> < /el-popover> < /template> < script setup> const emotions = [ { desc: '好評', icon: 'icon-xiaolian' }, { desc: '中評', icon: 'icon-wubiaoqing' }, { desc: '差評', icon: 'icon-kulian' } ] const refMap = ref() const tempRef = ref() const visiblePopover = ref(false) // -1-字句稽核 0-整句稽核 1-日誌檢視 const popoverType = ref(0) const popoverWidth = computed(() => { [-1]: 80, [0]: 150, [1]: 90 }[popoverType.value]) const handleRef = (ref, item, type) => { tempRef.value = ref popoverType.value = type if (~type) { // ...業務邏輯1 } else { // ...業務邏輯2、3 } visiblePopover.value = true } < /script> < style scoped> .trigger { display: contents; } < /style>
現在,在這個例子中:
- popvoer以單例形式存在,不會出現400行就渲染上千個popover元件這樣的情況
- 需要一些中間狀態儲存相關狀態和資料
- 不同的觸發內容外套一層div.trigger用以去解決觸發和關閉popper的衝突(當需要用到外部點選去關閉popover的時候)
到此這篇關於el-table巢狀el-popover處理卡頓的解決的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2899207/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何解決快應用頁面滑動卡頓問題
- 巢狀ScrollView問題解決思路巢狀View
- 不要在 XML 設定,解決 NestedScrollView 巢狀 RecyclerView 滑動卡頓XMLView巢狀
- android檢測卡頓問題,recycleview卡頓AndroidView
- el-table 多表格彈窗巢狀資料顯示異常錯亂問題巢狀
- 教你幾招讓你的Mac不再卡頓,流暢如新Mac
- 移動APP卡頓問題解決實踐APP
- 記解決 Postman 卡頓,佔 CUP,卡死問題Postman
- iPhone手機卡在載入頁面怎麼辦?如何解決iPhone卡頓問題iPhone
- div拖動遇到iframe卡頓的問題解決
- iis 下 swfupload 上傳大檔案 卡頓 404 錯誤 等問題處理方法
- 電腦出現常見問題卡頓,教你優化提速技巧優化
- RestTemplate處理巢狀的複雜返回物件REST巢狀物件
- win10檔案重新命名卡頓當機如何解決_win10資料夾重新命名當機卡頓怎麼處理Win10
- win10遊戲卡頓非常嚴重怎麼處理_win10遊戲卡頓解決方法Win10遊戲
- 基於vue解決大資料表格卡頓問題Vue大資料
- linux df -h卡頓問題(卡住)Linux
- 【NPL】如何解決90%的自然語言處理問題:分步指南奉上自然語言處理
- win 10電腦網頁卡頓解決方法_win10電腦看網頁卡頓怎麼處理網頁Win10
- 【slam】解決VirtualBox執行ubuntu18.04.6卡頓的問題SLAMUbuntu
- WPF頻繁更新UI卡頓問題UI
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- 教你如何處理Nginx禁止ip加埠訪問的問題Nginx
- win10右鍵卡頓怎麼辦_win10滑鼠右鍵卡頓如何解決Win10
- win10 固態卡頓怎麼辦_win10電腦硬碟卡頓如何解決Win10硬碟
- Win10膝上型電腦外接螢幕介面出現卡頓、掉幀問題如何解決Win10
- 伺服器突然出現卡頓怎麼處理伺服器
- react native ScrollView巢狀WebView 互動問題React Native巢狀WebView
- win10系統ppt2010卡頓怎麼解決_win10系統ppt2010卡頓如何處理Win10
- 解決 wsl2/WSLg 聲音卡頓不連續問題
- win10系統下移動滑鼠卡頓如何解決Win10
- win10 1903系統卡頓嚴重如何解決Win10
- Android 教你如何發現 APP 卡頓AndroidAPP
- windows10玩lol打字卡頓如何處理_windows10系統lol一打字就卡頓解決方法Windows
- 教你如何解決MySQL資料延遲跳動的問題MySql
- 教你如何解決PostgreSQL Array使用中的一些小問題SQL
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- win10系統office(word/excel)打字卡頓如何解決Win10Excel