Explorar el Código

fix(tree): prepareSpecialMove问题

vian hace 3 años
padre
commit
f987e04638
Se han modificado 1 ficheros con 5 adiciones y 3 borrados
  1. 5 3
      tree/src/tree.ts

+ 5 - 3
tree/src/tree.ts

@@ -433,7 +433,7 @@ export class Tree<T extends TreeRaw = TreeRaw> {
   }
 
   // 检查节点是否有相同顺序号的错误情况(协作的时候可能导致)
-  checkSeq(nodes: TreeNode<T>[]) {
+  checkSeq(nodes: TreeNode<T>[]): boolean {
     const seqList: number[] = nodes.map(node => node.seq);
     const seqSet = new Set(seqList);
     return seqList.length === seqSet.size;
@@ -445,8 +445,10 @@ export class Tree<T extends TreeRaw = TreeRaw> {
     sourceNodes: TreeNode<T>[],
     targetNode: TreeNode<T>
   ): UpdateData[] {
-    const fisrtNodeIdx = allNodes.indexOf(sourceNodes[0]);
-    const targetNodeIdx = allNodes.indexOf(targetNode);
+    const fisrtNodeIdx = allNodes.findIndex(
+      node => node.ID === sourceNodes[0].ID
+    ); // 不能用indexOf,因为传入的可能时proxy节点
+    const targetNodeIdx = allNodes.findIndex(node => node.ID === targetNode.ID);
     const position = fisrtNodeIdx > targetNodeIdx ? 'prev' : 'next';
     const nodes = []; // 防止改了原始数组顺序
     for (const node of allNodes) {