diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index 2ce2d07de..48503ba6c 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -310,6 +310,7 @@ export class NodeChildren implements Omit, let removedNode; if (node) { removedNode = this.children.splice(start, deleteCount, node); + node.internalSetParent(this.owner); } else { removedNode = this.children.splice(start, deleteCount); } diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 04c72a8fd..4155dedb7 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -197,7 +197,7 @@ export class Node isInited = false; - _settingEntry: ISettingTopEntry; + _settingEntry?: ISettingTopEntry; get settingEntry(): ISettingTopEntry { if (this._settingEntry) return this._settingEntry; @@ -988,6 +988,7 @@ export class Node this.props.purge(); this.settingEntry?.purge(); this.children?.purge(); + this._settingEntry = undefined; } internalPurgeStart() { diff --git a/packages/designer/tests/document/node/node-children.test.ts b/packages/designer/tests/document/node/node-children.test.ts index 1aa7e3ccb..b5b2744ff 100644 --- a/packages/designer/tests/document/node/node-children.test.ts +++ b/packages/designer/tests/document/node/node-children.test.ts @@ -111,6 +111,16 @@ describe('NodeChildren 方法测试', () => { expect(children.length).toBe(2); }); + it('split add node and update node parent', () => { + const firstBtn = doc.getNode('node_k1ow3cbn')!; + const { children } = firstBtn.parent!; + const node = doc.createNode({ componentName: 'Button' }); + + children.splice(0, 0, node); + + expect(node.parent).toBe(firstBtn.parent); + }) + it('map', () => { const firstBtn = doc.getNode('node_k1ow3cbn')!; const { children } = firstBtn.parent!; diff --git a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx index b2eb8c7a8..3aaa9435a 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -134,7 +134,7 @@ export class SettingsPrimaryPane extends Component