文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

el-table嵌套el-popover处理卡顿如何解决

2023-06-30 17:00

关注

本篇内容主要讲解“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">        通过      </el-button>      <popover>        <div class="popover-list-item" @click="handleLog(row)">查看日志</div>      </popover>  </template></el-table-column>

el-table嵌套el-popover处理卡顿如何解决

解决方法

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 class="trigger">            <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 class="trigger">          <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 class="trigger">          <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 lang="scss" scoped>.trigger {  display: contents;}</style>

现在,在这个例子中:

到此,相信大家对“el-table嵌套el-popover处理卡顿如何解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯