refactor(perf): 解决内存泄漏问题, 回收 setting-top-entry, 断开 setting-field 父子之间的互相引用关系

This commit is contained in:
力皓 2021-04-22 19:13:41 +08:00
parent 6a1af9d729
commit 5b64850bd5
2 changed files with 6 additions and 1 deletions

View File

@ -58,10 +58,13 @@ export class SettingField extends SettingPropEntry implements SettingEntry {
this._expanded = value;
}
constructor(readonly parent: SettingEntry, config: FieldConfig, settingFieldCollector?: (name: string | number, field: SettingField) => void) {
parent: SettingEntry;
constructor(parent: SettingEntry, config: FieldConfig, settingFieldCollector?: (name: string | number, field: SettingField) => void) {
super(parent, config.name, config.type);
const { title, items, setter, extraProps, ...rest } = config;
this.parent = parent;
this._config = config;
this._title = title;
this._setter = setter;
@ -115,6 +118,7 @@ export class SettingField extends SettingPropEntry implements SettingEntry {
purge() {
this.disposeItems();
this.parent = null as any;
}
// ======= compatibles for vision ======

View File

@ -69,6 +69,7 @@ export class SettingsMain {
this.designer = nodes[0].document.designer;
}
this._settings?.purge();
this._settings = this.designer.createSettingEntry(nodes);
}