首页 > 其他分享 >关于elementui的cascader组件多个级联大量数据滚动定位样式导致卡顿问题

关于elementui的cascader组件多个级联大量数据滚动定位样式导致卡顿问题

时间:2023-10-23 18:23:00浏览次数:25  
标签:none const elementui imp add popperEle cascader 卡顿

如题,多个cascader级联组件,下拉选项含大量数据,滚动时会有实时样式重新渲染,导致CUP内存溢满而卡顿

解决尝试:使用elementui中的内部源码方法处理

<script>
    import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event';
    ...
    
    setup(){
        onMounted(){
            refs.cascaderRef.removeResizeListener();
        }
        // 折叠,展开
        const cascaderVisibleChange = (val) => {
            if (val) {
                refs.cascaderRef.addResizeListener();
            } else {
                refs.cascaderRef.removeResizeListener();
            }
        }
    }
    
</script>

注:测试后无效,弹窗样式实时更新;

 

# 解决方法:强制写入display: none;样式,可加loading一次性加载完后再允许滚动

<style lang="scss">
  .none-imp {
    display: none!important;
  }
</style>

// 当级联组件数据量大,滚动实时监听样式导致渲染消耗CPU内存溢出,可将其和子元素样式强制隐藏
const cascaderScrollStyle = (type) => {
    const popperEle = refs.cascaderRef[0].$refs.popper
    if (type === 'add') {
        // 父元素
        popperEle.classList.add('none-imp')
        // 第一个子元素
        popperEle.firstChild.classList.add('none-imp')
    } else if (type === 'remove') {
        popperEle.classList.remove('none-imp')
        popperEle.firstChild.classList.remove('none-imp')
    }
}

// 防止el-cascader数据量过大,选择时卡顿,去掉属性aria-owns
const cascaderVisibleChange = (val) => {
    if (val) {
        cascaderScrollStyle('remove')
    } else {
        cascaderScrollStyle('add')
    }
    nextTick(() => {
        // 下拉项滚动删除属性aria-owns
        const $el = document.querySelectorAll('.el-cascader-node[aria-owns]')
        Array.from($el).map(item => item.removeAttribute('aria-owns'))
    })
}

onMounted(() => {
    nextTick(() => {
        cascaderScrollStyle('add')
    })
})

 

标签:none,const,elementui,imp,add,popperEle,cascader,卡顿
From: https://www.cnblogs.com/cp-cookie/p/17783150.html

相关文章

  • ElementUI——el-upload上传前校验图片宽高
    前言总要写点东西吧,最近忙于项目,github上的问题也没处理,博客也没咋写,自媒体上的东西也没咋发,随手记录一下当前项目改造时候遇到的问题吧;内容before-upload借助于:before-upload来进行校验,使用FileReader和Image来获取宽高constreader=newFileReader()reader.onload......
  • vivado关联vscod不卡顿处理
    安装版本 推荐:cmd /S /k "code -g [file name]:[line number]"免安装版本只能用这个方法  D:/*****/*****/MicrosoftVSCode/Code.exe-g[filename]:[linenumber] ......
  • wpf TextBox复制文字卡顿 和迅雷的冲突
    迅雷会在后台一直监控读取用户剪切板,如果发现是下载格式,将会弹出下载框在wpf的TextBox中,快速按CtrlC会导致获取剪切板和设置剪切板的命令争抢引发System.Runtime.InteropServices.COMException这个异常通过查看源代码,发现在复制文字时,他们都不同情况的重试,暂停这可能就导致了......
  • 安防视频监控平台EasyCVR出现视频流播放卡顿情况,如何优化?
    视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。......
  • Vue3 element-plus el-cascader后缀图标更改(svg)
    概述今天用element-plus写通用表单的时候,发现了它的el-cascader组件竟然不支持改后缀图标,主要它的普通下拉el-select组件都能随便改suffix-icon,级联的下拉就不支持了,令人疑惑。    然后,找了好多办法,包括直接取原生的Component改它的arrowDown属性,发现也不支持了。没......
  • 翻译语言选择自定义封装(elementUI)
    基于elementUI下拉菜单项el-dropdown自定义封装<template><div><el-dropdowntrigger="click"@command="handleCommand"><el-inputv-model="form.key1"suffix-icon="el-icon-arrow-down"pl......
  • 为何4G监控设备接入LiteCVR后,阴雨天气频繁出现播放卡顿现象?
    近年来,随着计算机、网络、图像处理以及传输技术的飞速发展,视频监控业务正在向其他领域加速渗透。LiteCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议、多类型的设备接入,属于性能稳定、高可靠、高可用的流媒体视频......
  • elementui组件封装(el-menu)
    废话不多说直接上代码:递归菜单项:<template><el-submenuv-if="menuData.children&&menuData.children.length>0":index="menuData.menuId"><templateslot="title"><iclass="el-icon-location......
  • vue el-select/el-cascader获取选中的对象label值
    1.el-select获取选中对象label值<el-form-itemlabel="车辆配置"prop="sales_name"><el-selectv-if="!showSaleNameInput"v-model="form.sales_name"clearableref="itemSelect"......
  • elementui表格复杂操作
    1.elementui表格最后一行加粗显示表格table加以下属性:cell-style="cellStyleModify"methods方法实现:cellStyleModify({row,column,rowIndex,columnIndex}){letfontStyle=null;if(row.ggmc.includes('合计')){fontStyle='font-wei......