" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

el-table嵌套el-popover處理卡頓的解決

 更新時(shí)間:2022年05月29日 10:39:30   作者:偶爾吃麻辣燙  
本文主要介紹了el-table嵌套el-popover處理卡頓的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

?? 罪魁禍?zhǔn)?/h2>

一個(gè)常見的場(chǎng)景是在表格行內(nèi)以el-popover的形式對(duì)行內(nèi)信息進(jìn)行一些業(yè)務(wù)操作。在表格分頁10條、20條的情況下頁面運(yùn)行良好,但是在分頁400條的時(shí)候會(huì)出現(xiàn)肉眼可見的卡頓。原因是表格渲染的popover組件太多了,一行如果至少3個(gè)popover組件,那么400行至少就得渲染1200個(gè)了。下面就是導(dǎo)致卡頓的通常寫法:

<el-table-column label="操作">
  <template #default="{ row }">
      <el-button class="button-main button-h-28">
        通過
      </el-button>
      <popover>
        <div class="popover-list-item" @click="handleLog(row)">查看日志</div>
      </popover>
  </template>
</el-table-column>

?? 解決方法

el-popover提供了一個(gè)虛擬觸發(fā)的功能,可以將觸發(fā)內(nèi)容和下拉內(nèi)容分開,那這樣就可以只用一個(gè)popover組件去涵蓋所有需要用到的場(chǎng)景。 像這個(gè)例子:

<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 class="trigger">
            <div
              :ref="el => (refMap[item.clause] = el)"
              @click="handleRef(refMap[item.clause], item, -1)"
            >
              <!-- 觸發(fā)內(nèi)容1 -->
            </div>
          </div>
        </template>
      </template>
    </el-table-column>
    <el-table-column label="情感打標(biāo)結(jié)果" min-width="150">
      <template #default="{ row }">
        <div class="trigger">
          <div
            :ref="ref => (refMap[row.commentId] = ref)"
            @click="handleRef(refMap[row.commentId], row, 0)"
          >
            <!-- 觸發(fā)內(nèi)容2 -->
          </div>
        </div>
      </template>
    </el-table-column>
    <el-table-column label="操作" min-width="150">
      <template #default="{ row }">
        <div class="trigger">
          <div :ref="ref => (refMap[`${row.commentId}Check`] = ref)">
            <!-- 觸發(fā)內(nèi)容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">
      <!-- 業(yè)務(wù)邏輯1 -->
    </template>
    <template v-else-if="popoverType === 0">
      <!-- 業(yè)務(wù)邏輯2 -->
    </template>
    <template v-else>
      <!-- 業(yè)務(wù)邏輯3 -->
    </template>
  </el-popover>
</template>
<script setup>
const emotions = [
    { desc: '好評(píng)', icon: 'icon-xiaolian' },
    { desc: '中評(píng)', icon: 'icon-wubiaoqing' },
    { desc: '差評(píng)', 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) {
    // ...業(yè)務(wù)邏輯1
  } else {
    // ...業(yè)務(wù)邏輯2、3
  }
  visiblePopover.value = true
}
</script>
<style lang="scss" scoped>
.trigger {
  display: contents;
}
</style>

現(xiàn)在,在這個(gè)例子中:

  • popvoer以單例形式存在,不會(huì)出現(xiàn)400行就渲染上千個(gè)popover組件這樣的情況
  • 需要一些中間狀態(tài)保存相關(guān)狀態(tài)和數(shù)據(jù)
  • 不同的觸發(fā)內(nèi)容外套一層div.trigger用以去解決觸發(fā)和關(guān)閉popper的沖突(當(dāng)需要用到外部點(diǎn)擊去關(guān)閉popover的時(shí)候)

到此這篇關(guān)于el-table嵌套el-popover處理卡頓的解決的文章就介紹到這了,更多相關(guān)el-table嵌套el-popover卡頓內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue使用mui遇到的坑及解決

    vue使用mui遇到的坑及解決

    這篇文章主要介紹了vue使用mui遇到的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue使用keep-alive實(shí)現(xiàn)組件切換時(shí)保存原組件數(shù)據(jù)方法

    vue使用keep-alive實(shí)現(xiàn)組件切換時(shí)保存原組件數(shù)據(jù)方法

    這篇文章主要介紹了vue使用keep-alive實(shí)現(xiàn)組件切換時(shí)保存原組件數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 使用watch監(jiān)聽對(duì)象里面值的變化

    使用watch監(jiān)聽對(duì)象里面值的變化

    這篇文章主要介紹了使用watch監(jiān)聽對(duì)象里面值的變化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue.js的計(jì)算屬性computed詳解

    Vue.js的計(jì)算屬性computed詳解

    文章介紹了Vue.js中的計(jì)算屬性(computed properties),解釋了它們的基本概念、語法、優(yōu)勢(shì)以及應(yīng)用場(chǎng)景,文章通過有趣的示例展示了計(jì)算屬性在不同場(chǎng)景下的應(yīng)用,如計(jì)算全名、計(jì)算列表的總和和計(jì)算對(duì)象的屬性,感興趣的朋友一起看看吧
    2025-03-03
  • 如何使用vue-pdf-embed實(shí)現(xiàn)PDF在線預(yù)覽

    如何使用vue-pdf-embed實(shí)現(xiàn)PDF在線預(yù)覽

    vue-pdf-embed是一個(gè)基于Vue.js的插件,專門用于在Vue應(yīng)用中嵌入和展示PDF文件,本文將使用vue-pdf-embed實(shí)現(xiàn)PDF在線預(yù)覽功能,有需要的小伙伴可以參考一下
    2025-03-03
  • Vue 技巧之控制父類的 slot

    Vue 技巧之控制父類的 slot

    插槽(Slot)是Vue提出來的一個(gè)概念,正如名字一樣,插槽用于決定將所攜帶的內(nèi)容,插入到指定的某個(gè)位置,從而使模板分塊,具有模塊化的特質(zhì)和更大的重用性。
    2020-02-02
  • vue3將頁面生成pdf導(dǎo)出的操作指南

    vue3將頁面生成pdf導(dǎo)出的操作指南

    最近工作中有需要將一些前端頁面(如報(bào)表頁面等)導(dǎo)出為pdf的需求,下面這篇文章主要給大家介紹了關(guān)于vue3 如何將頁面生成 pdf 導(dǎo)出,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯(cuò)位問題及解決方法

    VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯(cuò)位問題及解決方法

    這篇文章主要介紹了VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯(cuò)位問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Vue3?使用Element?Plus表格單選帶checkbox功能

    Vue3?使用Element?Plus表格單選帶checkbox功能

    這篇文章主要介紹了Vue3?使用Element?Plus表格單選帶checkbox,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • 前端之vue3使用WebSocket的詳細(xì)步驟

    前端之vue3使用WebSocket的詳細(xì)步驟

    websocket實(shí)現(xiàn)的全雙工通信,真真太香了,下面這篇文章主要給大家介紹了關(guān)于前端之vue3使用WebSocket的詳細(xì)步驟,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評(píng)論

全椒县| 蓬溪县| 澄迈县| 靖江市| 松溪县| 上虞市| 靖宇县| 肇州县| 丹东市| 青龙| 海淀区| 青河县| 云南省| 枣阳市| 吉林省| 威宁| 新乐市| 三穗县| 福州市| 花莲县| 临洮县| 上高县| 维西| 钟祥市| 台南县| 石门县| 博客| 重庆市| 新河县| 邻水| 元氏县| 贵溪市| 荔波县| 忻州市| 巴南区| 星座| 太和县| 尼木县| 土默特右旗| 五莲县| 原平市|