diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 27d6aa9f..5c3606a7 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -327,9 +327,6 @@ class Editor extends BaseService { public async add(addNode: AddMNode | MNode[], parent?: MContainer | null): Promise { const stage = this.get('stage'); - const parentNode = parent && typeof parent !== 'function' ? parent : getAddParent(addNode); - if (!parentNode) throw new Error('未找到父元素'); - // 新增多个组件只存在于粘贴多个组件,粘贴的是一个完整的config,所以不再需要getPropsValue const addNodes = []; if (!Array.isArray(addNode)) { @@ -342,7 +339,13 @@ class Editor extends BaseService { addNodes.push(...addNode); } - const newNodes = await Promise.all(addNodes.map((node) => this.doAdd(node, parentNode))); + const newNodes = await Promise.all( + addNodes.map((node) => { + const parentNode = parent && typeof parent !== 'function' ? parent : getAddParent(node); + if (!parentNode) throw new Error('未找到父元素'); + return this.doAdd(node, parentNode); + }), + ); if (newNodes.length > 1) { const newNodeIds = newNodes.map((node) => node.id); diff --git a/packages/editor/src/utils/operator.ts b/packages/editor/src/utils/operator.ts index 69a75c52..d908f948 100644 --- a/packages/editor/src/utils/operator.ts +++ b/packages/editor/src/utils/operator.ts @@ -86,11 +86,11 @@ export const getPositionInContainer = (position: PastePosition = {}, id: Id) => }; }; -export const getAddParent = (addNode: AddMNode | MNode[]) => { +export const getAddParent = (node: MNode) => { const curNode = editorService.get('node'); let parentNode; - if (!Array.isArray(addNode) && isPage(addNode as MNode)) { + if (isPage(node)) { parentNode = editorService.get('root'); } else if (curNode.items) { parentNode = curNode;