From 20d3f41d6df26d87da2eae3279ad0ac66dba7260 Mon Sep 17 00:00:00 2001 From: qhbin <925078922@qq.com> Date: Thu, 26 Aug 2021 11:51:39 +0800 Subject: [PATCH] fix(Popup): memory leak issue (#9336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 修复弹框组件内存泄漏问题 * fix: es5兼容 Co-authored-by: qiuhuibin --- src/mixins/popup/context.ts | 8 ++++++++ src/mixins/popup/overlay.ts | 1 + 2 files changed, 9 insertions(+) diff --git a/src/mixins/popup/context.ts b/src/mixins/popup/context.ts index 6ab98f914..9935a3768 100644 --- a/src/mixins/popup/context.ts +++ b/src/mixins/popup/context.ts @@ -13,4 +13,12 @@ export const context = { find(vm: any): StackItem | undefined { return this.stack.filter((item) => item.vm === vm)[0]; }, + remove: function remove(vm: any) { + const item = this.find(vm); + if(!item) return; + item.vm = null; + item.overlay = null; + const index = this.stack.indexOf(item); + this.stack.splice(index, 1); + }, }; diff --git a/src/mixins/popup/overlay.ts b/src/mixins/popup/overlay.ts index 1d5d86f6a..c4345d4f9 100644 --- a/src/mixins/popup/overlay.ts +++ b/src/mixins/popup/overlay.ts @@ -73,5 +73,6 @@ export function removeOverlay(vm: any) { const item = context.find(vm); if (item) { removeNode(item.overlay.$el); + context.remove(vm); } }