From 3853f76ff94981f9e307a2541364450dc81d2d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=9B=E7=9A=93?= Date: Wed, 28 Apr 2021 10:03:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(mem):=20=E7=BB=A7=E7=BB=AD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/designer/src/designer/setting/setting-field.ts | 1 - .../designer/src/designer/setting/setting-top-entry.ts | 1 + packages/designer/src/document/node/node.ts | 1 + packages/react-simulator-renderer/src/index.ts | 8 ++++++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index 2f922a5a0..2267fcef9 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -118,7 +118,6 @@ export class SettingField extends SettingPropEntry implements SettingEntry { purge() { this.disposeItems(); - this.parent = null as any; } // ======= compatibles for vision ====== diff --git a/packages/designer/src/designer/setting/setting-top-entry.ts b/packages/designer/src/designer/setting/setting-top-entry.ts index b7074f24f..ab09d355c 100644 --- a/packages/designer/src/designer/setting/setting-top-entry.ts +++ b/packages/designer/src/designer/setting/setting-top-entry.ts @@ -204,6 +204,7 @@ export class SettingTopEntry implements SettingEntry { purge() { this.disposeItems(); + this._settingFieldMap = {}; this.emitter.removeAllListeners(); } diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 4ea6e5f52..74ff0434a 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -770,6 +770,7 @@ export class Node { this.purged = true; this.autoruns?.forEach((dispose) => dispose()); this.props.purge(); + this.settingEntry.purge(); // this.document.destroyNode(this); } diff --git a/packages/react-simulator-renderer/src/index.ts b/packages/react-simulator-renderer/src/index.ts index 3a8872665..b88a94c05 100644 --- a/packages/react-simulator-renderer/src/index.ts +++ b/packages/react-simulator-renderer/src/index.ts @@ -4,4 +4,12 @@ if (typeof window !== 'undefined') { (window as any).SimulatorRenderer = renderer; } +window.addEventListener('beforeunload', () => { + (window as any).LCSimulatorHost = null; + // @ts-ignore + renderer.dispose?.(); + (window as any).SimulatorRenderer = null; + (window as any).ReactDOM.unmountComponentAtNode(document.getElementById('app')); +}); + export default renderer;