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;