精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ElementPlus 被發現重大 BUG!可能會讓頁面崩掉!

開發 前端
一開始,我也沒有懷疑這種高 Star 的開源組件,覺得肯定是我寫的代碼有問題。為了追查到底,我主要用了?ElDialog?組件,封裝成了一個命令式的?Dialog組件,避免頻繁使用?v-model參數。然后,我就把懷疑的目光投向了?ElDialog。

前端開發者們注意啦,今天給大家帶來一個關于Element-plus組件的內存泄漏問題,經過測試,以下組件存在內存泄漏的現象:

  • el-carousel
  • el-select + el-options
  • el-descriptions
  • el-tag
  • el-dialog
  • el-notification
  • el-loading
  • el-result
  • el-message
  • el-button
  • el-tabs
  • el-menu
  • el-popper

以下是我在 Vue 3.5.13 和 Element Plus 2.9.7 版本下的排查環境:

  • Vue版本:3.5.13
  • Element Plus版本:2.9.7
  • 操作系統:Windows 10
  • 瀏覽器:Edge 134.0.3124.85 (正式版)
  • 構建工具:Webpack

排查過程

一開始,我也沒有懷疑這種高 Star 的開源組件,覺得肯定是我寫的代碼有問題。為了追查到底,我主要用了 ElDialog 組件,封裝成了一個命令式的 Dialog組件,避免頻繁使用 v-model參數。然后,我就把懷疑的目光投向了 ElDialog

結果,經過測試,果然,Dialog組件在關閉和銷毀時,會導致內存使用飆升。特別是當 Dialog 中包含各種表單組件時,一旦打開,就會創建大量的 Element 元素,導致內存泄漏。為了解決這個問題,我用了 FinalizationRegistry類追蹤 Dialog 組件實例的銷毀,代碼如下:

const finalizerRegistry = new FinalizationRegistry((heldValue) => {
  console.log('Finalizing instance: ',heldValue);
});


// 在創建處監聽
const heldValue = Symbol(`DialogCommandComponent_${Date.now()}`);
finalizerRegistry.register(this, heldValue);
console.log(`Constructed instance:`,heldValue);

通過測試,發現Dialog組件的銷毀過程沒有產生銷毀信息,這意味著它沒有正確地釋放資源。于是,我決定進一步分析,是否是Dialog組件內部的引用問題導致元素未能銷毀。我嘗試用純el-dialog組件進行測試,結果同樣發現內存泄漏。

圖片圖片

擴展測試

為了進一步驗證其他組件是否也存在類似問題,我編寫了一段代碼,檢查了多個 Element-plus 組件的內存占用情況。以下是相關代碼:

<template>
  <div>
    <el-button @click="fn2">Reset</el-button>
</div>
<el-dialog v-model="model" destroy-on-close @closed="fn1" append-to-body v-if="destroyDialogModelValue"></el-dialog>
<el-button @click="fn0" v-if="!button" primse>Click</el-button>
<div class="weak" v-if="!button">xxx</div>
<el-input v-if="!button" />
<el-border v-if="!button" />
<el-select v-if="!button">
    <el-option>1111</el-option>
</el-select>
<el-switch v-if="!button" />
<el-radio v-if="!button" />
<el-rate v-if="!button" />
<el-slider v-if="!button" />
<el-time-picker v-if="!button" />
<el-time-select v-if="!button" />
<el-transfer v-if="!button" />
<el-tree-select v-if="!button" />
<el-calendar v-if="!button" />
<el-card v-if="!button" />
<el-carousel height="150px" v-if="!button">
    <el-carousel-item v-for="item in 4" :key="item">
      <h3 class="small justify-center" text="2xl">{{ item }}</h3>
    </el-carousel-item>
</el-carousel>
<el-descriptions title="User Info" v-if="!button">
    <el-descriptions-item label="Username">kooriookami</el-descriptions-item>
</el-descriptions>
<el-table style="width: 100%" v-if="!button">
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" />
</el-table>
<el-avatar v-if="!button" />
<el-pagination layout="prev, pager, next" :total="50" v-if="!button" />
<el-progress :percentage="50" v-if="!button" />
<el-result icon="success" title="Success Tip" sub-title="Please follow the instructions" v-if="!button">
    <template #extra>
      <el-button type="primary">Back</el-button>
    </template>
</el-result>
<el-skeleton v-if="!button" />
<el-tag v-if="!button" />
<el-timeline v-if="!button" />
<el-tree v-if="!button" />
<el-avatar v-if="!button" />
<el-segmented size="large" v-if="!button" />
<el-dropdown v-if="!button">
    <span class="el-dropdown-link">
      Dropdown List
      <el-icon class="el-icon--right">
        <arrow-down />
      </el-icon>
    </span>
    <template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item>Action 1</el-dropdown-item>
        <el-dropdown-item>Action 2</el-dropdown-item>
        <el-dropdown-item>Action 3</el-dropdown-item>
        <el-dropdown-item disabled>Action 4</el-dropdown-item>
        <el-dropdown-item divided>Action 5</el-dropdown-item>
      </el-dropdown-menu>
    </template>
</el-dropdown>
<el-menu class="el-menu-demo" mode="horizontal" v-if="!button">
    <el-menu-item index="1">Processing Center</el-menu-item>
    <el-sub-menu index="2">
      <template #title>Workspace</template>
      <el-menu-item index="2-1">item one</el-menu-item>
      <el-menu-item index="2-2">item two</el-menu-item>
      <el-menu-item index="2-3">item three</el-menu-item>
      <el-sub-menu index="2-4">
        <template #title>item four</template>
        <el-menu-item index="2-4-1">item one</el-menu-item>
        <el-menu-item index="2-4-2">item two</el-menu-item>
        <el-menu-item index="2-4-3">item three</el-menu-item>
      </el-sub-menu>
    </el-sub-menu>
    <el-menu-item index="3" disabled>Info</el-menu-item>
    <el-menu-item index="4">Orders</el-menu-item>
</el-menu>

<el-steps style="max-width: 600px" active="0" finish-status="success" v-if="!button">
    <el-step title="Step 1" />
    <el-step title="Step 2" />
    <el-step title="Step 3" />
</el-steps>

<el-tabs class="demo-tabs" v-if="!button">
    <el-tab-pane label="User" name="first">User</el-tab-pane>
    <el-tab-pane label="Config" name="second">Config</el-tab-pane>
    <el-tab-pane label="Role" name="third">Role</el-tab-pane>
    <el-tab-pane label="Task" name="fourth">Task</el-tab-pane>
</el-tabs>

<el-alert title="Success alert" type="success" v-if="!button" />
<el-drawer title="I am the title" v-if="!button">
    <span>Hi, there!</span>
</el-drawer>

<div v-loading="model" v-if="!button"></div>

<el-popconfirm confirm-button-text="Yes" cancel-button-text="No" icon-color="#626AEF"
    title="Are you sure to delete this?" v-if="!button">
    <template #reference>
      <el-button>Delete</el-button>
    </template>
</el-popconfirm>

<el-popover class="box-item" title="Title" content="Top Center prompts info" placement="top" v-if="!button">
    <template #reference>
      <div>top</div>
    </template>
</el-popover>

<el-tooltip class="box-item" effect="dark" content="Top Left prompts info" placement="top-start" v-if="!button">
    <div>top-start</div>
</el-tooltip>
</template>

<script setup>
import { ref } from"vue";
import { ElMessage, ElMessageBox, ElNotification } from"element-plus";

const model = ref(false);
const destroyDialogModelValue = ref(false);
const button = ref(false);

function fn0() {
  model.value = true;
  destroyDialogModelValue.value = true;
  ElMessage("This is a message.");
  ElMessageBox.alert("This is a message", "Title");
  ElNotification({
    title: "Title",
    message: "This is a reminder",
  });
}
function fn1() {
console.log("closed");
  destroyDialogModelValue.value = false;
  button.value = true;
}
function reset() {
  model.value = false
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

每次點擊“Click”按鈕后,我關閉所有彈窗,再點擊“Reset”按鈕,然后重復上述操作,發現內存占用一直在上漲。經過反復操作,最終確定了Element-plus的多個組件存在內存泄漏問題。

未能解決

面對這個問題,我也查找了大量的資源,包括 Element-plus的GitHub issues和相關論壇,但現有的解決方法基本無效。經過思考,以下是我想到的幾種可能的解決方案:

  • 是否可以為有泄漏的組件手動實現銷毀機制?
  • ElDialog是否只在全局使用一兩個實例?
  • 是否能將所有路由都打成單頁面應用(SPA)?
  • 是否需要修改源碼?

目前,這些方案都沒有給我帶來太大突破,但仍在繼續研究中。

責任編輯:武曉燕 來源: 前端之神
相關推薦

2025-10-21 08:58:13

2025-06-20 08:14:55

2021-04-20 10:31:29

WhatsAppAndroid惡意軟件

2016-12-27 18:43:33

iOS 10.2iPhone蘋果

2020-07-06 07:48:16

MySQL細節SQL

2019-07-01 09:10:00

前端開發技術

2018-09-03 15:20:29

2014-09-26 09:22:35

2018-07-10 11:05:18

開發者技能命令

2009-04-08 15:35:18

LinuxWindows文件系統

2012-07-27 08:53:06

Windows 8微軟

2017-03-23 16:03:01

2012-12-10 10:19:01

Google NowChrome

2018-07-10 10:45:00

規范Commit項目

2014-02-18 09:24:34

2023-05-31 09:48:01

開源AI

2015-09-28 10:03:29

2021-02-22 10:01:16

人工智能黑客網絡安全

2019-09-09 10:08:05

邊緣計算網絡物聯網

2022-06-01 08:00:58

KubernetesCPULinux
點贊
收藏

51CTO技術棧公眾號

欧美中文在线观看| 福利微拍一区二区| 91色精品视频在线| 激情小说中文字幕| 日本一区福利在线| 在线免费av一区| 一本二本三本亚洲码| www.四虎在线观看| 午夜亚洲激情| 久久久精品欧美| 黄色在线免费播放| 高清av一区二区三区| 亚洲精品五月天| 欧美裸体网站| 亚洲国产精品suv| 久久综合伊人| 欧美激情欧美狂野欧美精品| 亚洲午夜精品久久久久久高潮| 日韩理伦片在线| 国产aⅴ综合色| 国产精品久久一| 91香蕉在线视频| 成人3d动漫在线观看| 日韩精品一区二区三区中文不卡| 欧美日韩一级在线| 人妻夜夜爽天天爽| 久久er精品视频| 日本电影亚洲天堂| 国产精品第一页在线观看| 成人在线免费小视频| 精品成人在线观看| 一区二区久久精品| 偷拍视频一区二区三区| 亚洲成人自拍偷拍| 成人在线免费高清视频| 欧美成年黄网站色视频| 国产亚洲精品资源在线26u| 国产 高清 精品 在线 a| 一级黄色录像大片| 日韩综合一区二区| 欧美在线亚洲在线| 日韩大片免费在线观看| 国产精品多人| 久久视频国产精品免费视频在线| 91免费视频污| 国产91在线精品| 一本大道av一区二区在线播放 | 午夜精品一区二| 亚洲小说欧美另类社区| 欧美黑人xxxx| 久久久精品国产sm调教| 综合一区av| 久久夜色精品国产欧美乱| 日本欧美一区二区三区不卡视频| 国产成年精品| 欧美理论电影在线| 911福利视频| 外国成人毛片| 日韩一区二区在线看| 国产永久免费网站| 香蕉久久一区| 欧美一级精品在线| 农村末发育av片一区二区| 欧美日韩中出| 亚洲а∨天堂久久精品喷水| 亚洲视频 中文字幕| 国产厕拍一区| 精品呦交小u女在线| av网站免费在线播放| 天堂在线精品| 中文字幕亚洲综合久久| 成人高潮免费视频| 欧美精品偷拍| 97人人模人人爽人人喊中文字| 东方伊人免费在线观看| 色一区二区三区四区| 久久久999精品| 青花影视在线观看免费高清| 欧美国内亚洲| 69av在线视频| 正在播放木下凛凛xv99| 国产一区二区中文字幕| 国产精品一区在线播放| 国产小视频在线| 国产精品区一区二区三区| 日韩第一页在线观看| 男插女视频久久久| 色一情一伦一子一伦一区| www.这里只有精品| 成人h动漫免费观看网站| 亚洲精品一区二区网址| a一级免费视频| 精品二区久久| 国产精品视频一区二区三区四| 亚欧视频在线观看| 久热精品视频| 91九色露脸| 韩国中文字幕2020精品| 亚洲卡通欧美制服中文| 免费高清在线观看免费| 99久久久国产| 日韩精品视频在线观看网址| 日本黄色激情视频| 亚洲精品男同| 91精品久久久久久久久青青| 日日夜夜精品免费| 中文字幕佐山爱一区二区免费| 亚洲精品乱码视频| 麻豆蜜桃在线| 欧美高清视频不卡网| 波多野结衣视频播放| 99精品在线| 欧美在线一区二区三区四| 超碰在线观看99| 中文字幕av一区二区三区高| 无码播放一区二区三区| 国产视频一区二区在线播放| 亚洲人成免费电影| 国产一级aa大片毛片| 久久99精品网久久| 日本一区二区三区免费观看| 成人高潮aa毛片免费| 欧美精品乱码久久久久久| 五月婷婷综合在线观看| 激情六月综合| 91亚色免费| 欧美成人三区| 欧美剧情片在线观看| 69视频在线观看免费| 在线亚洲成人| 国产精品免费一区二区三区| 免费大片黄在线| 欧美三级视频在线| 久久精品成人av| 国产欧美日韩亚洲一区二区三区| 日韩免费高清在线观看| 西西人体44www大胆无码| 亚洲一区在线观看视频| 在线一区二区不卡| 久久中文字幕av| 国产精品一区二区在线| 国产高清av在线| 一本一道综合狠狠老| 性色av蜜臀av色欲av| 精品999成人| 国产偷久久久精品专区| gratisvideos另类灌满| 精品国产乱码久久久久久久| 久草视频免费在线播放| 成人综合婷婷国产精品久久蜜臀| 麻豆av一区二区三区久久| 多野结衣av一区| 精品久久久久久久久久久久包黑料 | 精品国产亚洲在线| 欧美三级小视频| 国产精品123区| 黄色一级片黄色| 国产 日韩 欧美 综合 一区| 久久免费在线观看| 黄色福利在线观看| 精品久久久久久久久久久久| 久久人人妻人人人人妻性色av| 日韩av自拍| 成人a在线观看| a级在线观看| 欧美www视频| 日韩精品在线免费视频| 99久久国产综合精品女不卡| 超碰97人人射妻| 欧美最新另类人妖| 成人午夜在线影院| 久操av在线| 亚洲精品一区av在线播放| 真实的国产乱xxxx在线91| 日韩美女啊v在线免费观看| 麻豆tv在线观看| 99热这里只有成人精品国产| 激情一区二区三区| 天堂久久午夜av| 久久久国产成人精品| 粉嫩av一区二区夜夜嗨| 日韩欧美aaa| 九九精品视频免费| av在线免费不卡| 色综合天天色综合| 午夜电影亚洲| 欧美日韩天天操| 麻豆久久一区| 欧美重口另类videos人妖| 在线观看a视频| 精品日韩成人av| 国产成人无码专区| 一区二区三区中文字幕| 久久精品成人av| 国产老女人精品毛片久久| 久久久免费视频网站| 我不卡神马影院| 久久精品aaaaaa毛片| 豆花视频一区| 欧美综合在线第二页| 粗大黑人巨茎大战欧美成人| 亚洲美女动态图120秒| 国产乱淫片视频| 色综合视频在线观看| 日本中文字幕免费在线观看| 91在线精品秘密一区二区| 911av视频| 久久精品动漫| av无码久久久久久不卡网站| 久久人体视频| 欧美精品欧美精品| 91精品短视频| 91精品国产综合久久久久久久久 | 日本一区二区三区dvd视频在线 | 狠狠色丁香婷婷综合| 免费人成自慰网站| 99久久激情| 欧美在线激情| 极品束缚调教一区二区网站 | 亚洲在线欧美| 日韩av资源网| http;//www.99re视频| 51一区二区三区| 欧美一级大胆视频| 久久99亚洲网美利坚合众国| 乱亲女秽乱长久久久| 成a人片在线观看www视频| 亚洲精品美女视频| 国模私拍视频在线| 欧美一区二区三区四区久久 | аⅴ资源新版在线天堂| 亚洲加勒比久久88色综合| 精品黑人一区二区三区在线观看| 亚洲女人的天堂| 波多野在线播放| 91女神在线视频| 久久偷拍免费视频| av网站一区二区三区| 黄色av电影网站| 粉嫩av一区二区三区在线播放| 欧美精品99久久| 亚洲精选一区| 成年人网站免费视频| 亚洲精品婷婷| 日韩av片在线看| 性色一区二区三区| 欧美牲交a欧美牲交aⅴ免费真| 国产成人手机高清在线观看网站| 欧美一级在线亚洲天堂| 成人女同在线观看| 91精品国产电影| 在线视频超级| 国产97在线亚洲| 欧美日韩亚洲国产| 国产日韩在线视频| 国产精品高清一区二区| 亚洲aⅴ男人的天堂在线观看| 忘忧草在线影院两性视频| 午夜欧美不卡精品aaaaa| 99riav视频在线观看| 欧洲成人在线视频| 日韩欧美一区二区三区在线观看| 精品国偷自产在线| 黄网址在线观看| 日韩一二三在线视频播| 26uuu亚洲电影在线观看| 欧美激情videoshd| 第一福利在线视频| 国产精品1234| 精品国模一区二区三区欧美| 成人动漫视频在线观看免费| 老司机精品在线| 欧美一区二区三区成人久久片| 亚洲91网站| 精品卡一卡二| 成人短片线上看| 麻豆传媒网站在线观看| 99视频精品免费观看| 日本在线视频www| 日本中文字幕不卡| 一卡二卡三卡四卡五卡| 99久久综合狠狠综合久久| 一区二区精品免费| 亚洲欧洲在线观看av| 国产性xxxx高清| 在线观看91精品国产入口| 国产精品美女一区| 亚洲国产精品国自产拍av秋霞| 国产日韩欧美视频在线观看| 欧美精品一区二区三区久久久| av网站免费大全| 亚洲电影免费观看高清完整版在线| 国产情侣自拍小视频| 亚洲国产日韩精品在线| 高清国产福利在线观看| 久久999免费视频| 欧美成人ⅴideosxxxxx| 亚洲最大福利视频网| 亚洲亚洲免费| 91网站在线观看免费| 久久综合九色| 亚洲高清无码久久| 中文字幕一区二区三中文字幕| 日韩福利在线视频| 一区二区三区久久| 在线观看毛片av| 亚洲精品乱码久久久久久金桔影视| 日本激情视频网站| 久久精品国产亚洲| 忘忧草在线日韩www影院| 91精品久久香蕉国产线看观看| 经典三级久久| 91九色国产视频| 精品国产一区二区三区av片| 亚洲理论电影在线观看| 国产在线播精品第三| 公肉吊粗大爽色翁浪妇视频| 亚洲大型综合色站| 精品国产无码一区二区三区| 日韩中文字幕网| 国模一区二区| 精品视频一区二区三区四区| 欧美二区视频| av中文字幕网址| 国产午夜精品久久久久久免费视| 欧美特级黄色录像| 亚洲成人av中文| av一级黄色片| 久久色在线播放| 9999在线精品视频| 中文字幕制服丝袜在线| 免费在线成人网| 国产成人av一区二区三区不卡| 国产精品欧美精品| 91视频在线视频| 亚洲精品在线视频| 日本不卡1234视频| 国产精品福利视频| 黑人一区二区三区四区五区| 国产精品igao网网址不卡| 国产精品久久久久久户外露出| 日韩a级片在线观看| 51午夜精品国产| 久cao在线| 成人在线中文字幕| 88国产精品视频一区二区三区| 日本中文字幕亚洲| av中文字幕不卡| 日韩av一二三区| 国产视频精品久久久| 色戒汤唯在线观看| 欧美激情第一页在线观看| 奶水喷射视频一区| 88久久精品无码一区二区毛片| 中文字幕日韩精品一区| 国产一区二区三区中文字幕| 日韩有码视频在线| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 精品少妇一二三区| 亚洲第一精品福利| 成人性生活av| 亚欧精品在线| 国产一区二区三区黄视频 | 欧美一级片一区| 一区二区三区视频免费观看| 黑森林福利视频导航| 国产片一区二区三区| 在线观看国产一区二区三区| 久久国产精品影视| 国产欧美三级电影| 国产精品69页| 国产精品高清亚洲| 性中国古装videossex| 91精品国产乱码久久久久久蜜臀 | wwww亚洲| 久久伊人一区| 六月婷婷色综合| 久久久久久国产精品免费播放| 欧日韩精品视频| 免费av在线网站| 国产精品视频免费观看| 午夜在线a亚洲v天堂网2018| 一级片黄色录像| 欧美不卡123| 国产精品videossex撒尿| 国产成人生活片| 久久一夜天堂av一区二区三区| 日韩熟女精品一区二区三区| 一区二区在线免费视频| 欧美第一在线视频| 久久久精品在线视频| 亚洲色大成网站www久久九九| 一区二区三区麻豆| 久久99国产精品久久久久久久久| 国产精品第一国产精品| 无码日本精品xxxxxxxxx| 国产婷婷色一区二区三区| 精品久久久中文字幕人妻| 欧美亚洲激情视频| 中文字幕一区二区三区乱码图片 |