Skip to content

[Component] [All] 使用icon图标的组件都会造成内存泄漏【如何解决其他组件内存泄漏】 #14944

@hw952

Description

@hw952

Bug Type: Component

Environment

  • Vue Version: 3.3.8
  • Element Plus Version: 2.4.2
  • Browser / OS: UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
  • Build Tool: Vite

Reproduction

本人后端,最近才接触前端,要开发新项目看star数挺多的于是决定用它。经过几个月的奋斗项目上线了团队的成员都很开心。可是一上线客户电脑就各种崩溃。打开控制台内存占比一直居高不下动不动就1G 2G的占用,回头看看自己的代码都是从官网例子复制下来的,照着葫芦画瓢。出现这种情况确实不应该。于是又连续奋斗了几个礼拜,熬了几个大夜总结了会照成内存泄漏的组件,希望对其他小伙伴有帮助。

先在这里奉劝大家打算开发新项目的同学,不要用它,不要用它,不要用它,不然有你后悔的。

  1. el-dialog 一定要使用 append-to-body="true",不然会造成内存泄漏
  2. v-loading 指令会造成内存泄漏,已经用到的建议自己手搓一个 v-loading
  3. el-table row-key 会导致dom节点数量飙升,至少提升2.2+倍的dom数量【 再次验证这个不存在,故删除】
  4. el-color-picker 会导致内存泄漏, 很奇怪从GitHub下载下来的el-color-picker放到项目中只改了引用什么都没改就不会造成内存泄漏
  5. 什么el-select/el-select/el-date-picker ...只要使用icon图标都会造成内存泄漏。原因只是因为他们内部都是用 el-icon!!! 这个没想到吧? 一切的根源就是他。解决方法就是用其他图标代替,方法就不阐述了
  6. ...还在发现中

以上的坑,我踩过了,后来的小伙伴不要再踩了。

验证这个哥们说的话,不解释了。
#11922

再次奉劝大家开发新项目的同学,不要用它,不要用它,不要用它


提供el-select的例子
#14948

Metadata

Metadata

Assignees

No one assigned

    Labels

    Project::BugSomething isn't working🔨 Vue issueIssue caused by Vue. Can't do anything

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions