Skip to content

Commit 56dd09d

Browse files
committed
chore: Optimize json flat performance.
1 parent 00e59cc commit 56dd09d

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/components/Tree/index.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,12 @@ export default defineComponent({
6262
setup(props, { emit }) {
6363
const tree = ref<HTMLElement>();
6464

65+
const originFlatData = computed(() => jsonFlatten(props.data, props.path));
66+
6567
const state = reactive({
6668
translateY: 0,
6769
visibleData: null as FlatDataType | null,
68-
hiddenPaths: jsonFlatten(props.data, props.path).reduce((acc, item) => {
70+
hiddenPaths: originFlatData.value.reduce((acc, item) => {
6971
const depthComparison = props.deepCollapseChildren
7072
? item.level >= props.deep
7173
: item.level === props.deep;
@@ -86,10 +88,13 @@ export default defineComponent({
8688

8789
const flatData = computed(() => {
8890
let startHiddenItem: null | NodeDataType = null;
89-
const data = jsonFlatten(props.data, props.path).reduce((acc, cur, index) => {
91+
const data = [];
92+
const length = originFlatData.value.length;
93+
for (let i = 0; i < length; i++) {
94+
const cur = originFlatData.value[i];
9095
const item = {
9196
...cur,
92-
id: index,
97+
id: i,
9398
};
9499
const isHidden = state.hiddenPaths[item.path];
95100
if (startHiddenItem && startHiddenItem.path === item.path) {
@@ -101,14 +106,15 @@ export default defineComponent({
101106
type: isObject ? 'objectCollapsed' : 'arrayCollapsed',
102107
} as NodeDataType;
103108
startHiddenItem = null;
104-
return acc.concat(mergeItem);
109+
data.push(mergeItem);
105110
} else if (isHidden && !startHiddenItem) {
106111
startHiddenItem = item;
107-
return acc;
112+
continue;
113+
} else {
114+
if (startHiddenItem) continue;
115+
else data.push(item);
108116
}
109-
110-
return startHiddenItem ? acc : acc.concat(item);
111-
}, [] as FlatDataType);
117+
}
112118
return data;
113119
});
114120

0 commit comments

Comments
 (0)