|
@@ -1,5 +1,6 @@
|
|
import objectAssign from 'element-ui/src/utils/merge';
|
|
import objectAssign from 'element-ui/src/utils/merge';
|
|
import { markNodeData, NODE_KEY } from './util';
|
|
import { markNodeData, NODE_KEY } from './util';
|
|
|
|
+import { arrayFindIndex } from 'element-ui/src/utils/util';
|
|
|
|
|
|
export const getChildState = node => {
|
|
export const getChildState = node => {
|
|
let all = true;
|
|
let all = true;
|
|
@@ -435,8 +436,10 @@ export default class Node {
|
|
const newNodes = [];
|
|
const newNodes = [];
|
|
|
|
|
|
newData.forEach((item, index) => {
|
|
newData.forEach((item, index) => {
|
|
- if (item[NODE_KEY]) {
|
|
|
|
- newDataMap[item[NODE_KEY]] = { index, data: item };
|
|
|
|
|
|
+ const key = item[NODE_KEY];
|
|
|
|
+ const isNodeExists = !!key && arrayFindIndex(oldData, data => data[NODE_KEY] === key) >= 0;
|
|
|
|
+ if (isNodeExists) {
|
|
|
|
+ newDataMap[key] = { index, data: item };
|
|
} else {
|
|
} else {
|
|
newNodes.push({ index, data: item });
|
|
newNodes.push({ index, data: item });
|
|
}
|
|
}
|