Skip to content

Commit f3efcc9

Browse files
daviForevelkagol
authored andcommitted
fix(tree): 修复tree组件nodeMap数据存储问题
1 parent 934b6ca commit f3efcc9

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

packages/devui-vue/devui/tree/src/composables/use-core.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ export default function (): (data: Ref<IInnerTreeNode[]>) => IUseCore {
1818
if (node.isLeaf) {
1919
return [];
2020
}
21-
if (node.id && nodeMap.has(node.id)) {
21+
let mapKey = node.id || '';
22+
if (userConfig.expanded) {
23+
mapKey += '_expanded';
24+
}
25+
if (userConfig.recursive) {
26+
mapKey += '_recursive';
27+
}
28+
if (node.id && nodeMap.has(mapKey)) {
2229
const cacheNode = nodeMap.get(node.id);
2330
if (cacheNode) {
2431
return cacheNode;
@@ -54,7 +61,7 @@ export default function (): (data: Ref<IInnerTreeNode[]>) => IUseCore {
5461
}
5562
}
5663
if (node.id) {
57-
nodeMap.set(node.id, result);
64+
nodeMap.set(mapKey, result);
5865
}
5966
return result;
6067
};

packages/devui-vue/devui/tree/src/composables/use-merge-nodes.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { IInnerTreeNode, IUseCore, IUseMergeNodes } from './use-tree-types';
44

55
export default function () {
66
return function useMergeNodes(data: Ref<IInnerTreeNode[]>, core: IUseCore): IUseMergeNodes {
7-
const { setNodeValue, getChildren, clearNodeMap } = core;
7+
const { setNodeValue, getChildren } = core;
88
const { removeNode } = useOperate()(data, core);
99

1010
const mergeTreeNodes = () => {
@@ -31,8 +31,6 @@ export default function () {
3131
}
3232
};
3333

34-
// 合并节点时,getChildren只是获取直接子节点,需要将原来的nodeMap清空。(nodeMap中保存的是所有子节点)
35-
clearNodeMap();
3634
data.value
3735
.filter((item) => item.level === 1)
3836
.forEach((item) => {

0 commit comments

Comments
 (0)