From 342b45878b23b577046bcae0f7e72af7e9242501 Mon Sep 17 00:00:00 2001 From: chilingling Date: Sun, 23 Feb 2025 23:40:48 -0800 Subject: [PATCH 1/5] fix: add slots fail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 insert 方法因为 referTargetNode 找不到引起的报错,导致 slot 插槽增加失败 --- packages/canvas/DesignCanvas/src/api/useCanvas.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/canvas/DesignCanvas/src/api/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js index 5ca4b33020..65022721c5 100644 --- a/packages/canvas/DesignCanvas/src/api/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -472,14 +472,16 @@ const operationTypeMap = { // 筛选出来新增的和修改的 const changedChildren = newChildren.filter(({ id }) => !deletedIdsSet.has(id)) - changedChildren.forEach((childItem, index) => { + changedChildren.forEach((childItem) => { // 新增 if (!originChildrenSet.has(childItem.id)) { + const newChildIndex = newChildren.findIndex((id) => id === childItem.id) - 1 + operationTypeMap.insert({ parentId: id, newNodeData: childItem, position: 'after', - referTargetNodeId: changedChildren?.[index]?.id + referTargetNodeId: newChildIndex <= -1 ? null : newChildren[newChildIndex]?.id }) return } From 2e96124450a13b1923ac929666de3379470ddf6f Mon Sep 17 00:00:00 2001 From: chilingling Date: Mon, 24 Feb 2025 00:38:40 -0800 Subject: [PATCH 2/5] fix: correct new children insert logic --- packages/canvas/DesignCanvas/src/api/useCanvas.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/canvas/DesignCanvas/src/api/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js index 65022721c5..4215fc8481 100644 --- a/packages/canvas/DesignCanvas/src/api/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -475,13 +475,22 @@ const operationTypeMap = { changedChildren.forEach((childItem) => { // 新增 if (!originChildrenSet.has(childItem.id)) { - const newChildIndex = newChildren.findIndex((id) => id === childItem.id) - 1 + let newChildIndex = newChildren.findIndex((id) => id === childItem.id) + let position = 'after' + let referTargetNodeId = null + + if (newChildIndex === 0) { + position = 'before' + } else if (newChildIndex !== -1) { + position = 'after' + referTargetNodeId = newChildren[newChildIndex - 1]?.id + } operationTypeMap.insert({ parentId: id, newNodeData: childItem, - position: 'after', - referTargetNodeId: newChildIndex <= -1 ? null : newChildren[newChildIndex]?.id + position, + referTargetNodeId }) return } From d1ac2f98bb6f5dc6da9dd7868341b445101c8cac Mon Sep 17 00:00:00 2001 From: chilingling Date: Mon, 24 Feb 2025 01:22:58 -0800 Subject: [PATCH 3/5] fix: findIndex reading id error --- packages/canvas/DesignCanvas/src/api/useCanvas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/canvas/DesignCanvas/src/api/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js index 4215fc8481..13ae322638 100644 --- a/packages/canvas/DesignCanvas/src/api/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -475,7 +475,7 @@ const operationTypeMap = { changedChildren.forEach((childItem) => { // 新增 if (!originChildrenSet.has(childItem.id)) { - let newChildIndex = newChildren.findIndex((id) => id === childItem.id) + const newChildIndex = newChildren.findIndex(({ id }) => id === childItem.id) let position = 'after' let referTargetNodeId = null From eebaf2819936fc2019adb02d7e8d851800e9472b Mon Sep 17 00:00:00 2001 From: chilingling Date: Tue, 25 Feb 2025 17:49:21 -0800 Subject: [PATCH 4/5] fix: add semantic code comments --- packages/canvas/DesignCanvas/src/api/useCanvas.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/canvas/DesignCanvas/src/api/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js index 13ae322638..7949b269a1 100644 --- a/packages/canvas/DesignCanvas/src/api/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -479,6 +479,9 @@ const operationTypeMap = { let position = 'after' let referTargetNodeId = null + // 1. 新节点 index === 0 (在最前面),插入位置为 before,插入到第一个 + // 2. 新节点 index > 0,插入到 index -1 节点的后面。 + // 3. 默认情况:插入到数组最后一个节点。(position: after,referTargetNodeId: nuLl) if (newChildIndex === 0) { position = 'before' } else if (newChildIndex !== -1) { From 3be7ad565e000ca4af576a2719d7822b8c78a629 Mon Sep 17 00:00:00 2001 From: chilingling Date: Tue, 25 Feb 2025 17:52:49 -0800 Subject: [PATCH 5/5] fix: add semantic code comments --- packages/canvas/DesignCanvas/src/api/useCanvas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/canvas/DesignCanvas/src/api/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js index 7949b269a1..07b1fad6c7 100644 --- a/packages/canvas/DesignCanvas/src/api/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -481,7 +481,7 @@ const operationTypeMap = { // 1. 新节点 index === 0 (在最前面),插入位置为 before,插入到第一个 // 2. 新节点 index > 0,插入到 index -1 节点的后面。 - // 3. 默认情况:插入到数组最后一个节点。(position: after,referTargetNodeId: nuLl) + // 3. 默认情况(index === -1):插入到数组最后一个节点。(position: after,referTargetNodeId: nuLl) if (newChildIndex === 0) { position = 'before' } else if (newChildIndex !== -1) {