Просмотр исходного кода

fix(tree): prepareSpecialMove问题

vian 3 лет назад
Родитель
Сommit
d18947eec5
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      tree/src/tree.ts

+ 4 - 2
tree/src/tree.ts

@@ -451,12 +451,14 @@ export class Tree<T extends TreeRaw = TreeRaw> {
     const targetNodeIdx = allNodes.findIndex(node => node.ID === targetNode.ID);
     const position = fisrtNodeIdx > targetNodeIdx ? 'prev' : 'next';
     const nodes = []; // 防止改了原始数组顺序
+    const sourceNodeIDs = sourceNodes.map(node => node.ID); // 不能直接用sourceNodes includes判断,因为传入的可能时proxy节点
     for (const node of allNodes) {
-      if (!sourceNodes.includes(node)) {
+      // 不能用includes,因为传入的可能时proxy节点
+      if (!sourceNodeIDs.includes(node.ID)) {
         nodes.push(node);
       }
     }
-    const targetIdx = nodes.indexOf(targetNode);
+    const targetIdx = nodes.findIndex(node => node.ID === targetNode.ID);
     if (position === 'prev') {
       // 插到targetNode前面
       nodes.splice(targetIdx, 0, ...sourceNodes);