• 关于多个elementui的cascader级联组件页面滚动渲染样式导致卡顿问题


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

    小优化技巧:可加loading一次性加载完多个cascader级联组件后再允许页面滚动

    方法一:使用elementui中的内部源码的方法处理(推荐)

    方法二:强制写入display: none;样式(次推荐)

    1. // 当级联组件数据量大,滚动实时监听样式导致渲染消耗CPU内存溢出,可将其和子元素样式强制隐藏
    2. const cascaderScrollStyle = (type) => {
    3. const popperEle = refs.cascaderRef[0].$refs.popper
    4. if (type === 'add') {
    5. // 父元素
    6. popperEle.classList.add('none-imp')
    7. // 第一个子元素
    8. popperEle.firstChild.classList.add('none-imp')
    9. } else if (type === 'remove') {
    10. popperEle.classList.remove('none-imp')
    11. popperEle.firstChild.classList.remove('none-imp')
    12. }
    13. }
    14. // 防止el-cascader数据量过大,选择时卡顿,去掉属性aria-owns
    15. const cascaderVisibleChange = (val) => {
    16. if (val) {
    17. cascaderScrollStyle('remove')
    18. } else {
    19. cascaderScrollStyle('add')
    20. }
    21. nextTick(() => {
    22. // 下拉项滚动删除属性aria-owns
    23. const $el = document.querySelectorAll('.el-cascader-node[aria-owns]')
    24. Array.from($el).map(item => item.removeAttribute('aria-owns'))
    25. })
    26. }
    27. onMounted(() => {
    28. nextTick(() => {
    29. cascaderScrollStyle('add')
    30. })
    31. })

  • 相关阅读:
    Rust教程:How to Rust-变量
    技术分享| 视频传输Simulcast与Svc
    js图片url反转file文件 vue
    应用层使用select进行检测连接状态
    Flutter-- Map、Class转json,json解析
    2024/03/01
    基于Python计算PLS中的VIP值(变量投影重要性分析法)
    模块化设计瞎谈
    基于JAVA基于MVC框架的在线书店设计计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    TStor CSP文件存储在大模型训练中的实践
  • 原文地址:https://blog.csdn.net/qq_38828542/article/details/134029510