@@ -62,10 +62,12 @@ export default defineComponent({
62
62
setup ( props , { emit } ) {
63
63
const tree = ref < HTMLElement > ( ) ;
64
64
65
+ const originFlatData = computed ( ( ) => jsonFlatten ( props . data , props . path ) ) ;
66
+
65
67
const state = reactive ( {
66
68
translateY : 0 ,
67
69
visibleData : null as FlatDataType | null ,
68
- hiddenPaths : jsonFlatten ( props . data , props . path ) . reduce ( ( acc , item ) => {
70
+ hiddenPaths : originFlatData . value . reduce ( ( acc , item ) => {
69
71
const depthComparison = props . deepCollapseChildren
70
72
? item . level >= props . deep
71
73
: item . level === props . deep ;
@@ -86,10 +88,13 @@ export default defineComponent({
86
88
87
89
const flatData = computed ( ( ) => {
88
90
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 ] ;
90
95
const item = {
91
96
...cur ,
92
- id : index ,
97
+ id : i ,
93
98
} ;
94
99
const isHidden = state . hiddenPaths [ item . path ] ;
95
100
if ( startHiddenItem && startHiddenItem . path === item . path ) {
@@ -101,14 +106,15 @@ export default defineComponent({
101
106
type : isObject ? 'objectCollapsed' : 'arrayCollapsed' ,
102
107
} as NodeDataType ;
103
108
startHiddenItem = null ;
104
- return acc . concat ( mergeItem ) ;
109
+ data . push ( mergeItem ) ;
105
110
} else if ( isHidden && ! startHiddenItem ) {
106
111
startHiddenItem = item ;
107
- return acc ;
112
+ continue ;
113
+ } else {
114
+ if ( startHiddenItem ) continue ;
115
+ else data . push ( item ) ;
108
116
}
109
-
110
- return startHiddenItem ? acc : acc . concat ( item ) ;
111
- } , [ ] as FlatDataType ) ;
117
+ }
112
118
return data ;
113
119
} ) ;
114
120
0 commit comments