@@ -163,12 +163,15 @@ export default class VariableSizeTree<T> extends React.PureComponent<
163163 props : VariableSizeTreeProps < { } > ,
164164 state : VariableSizeTreeState < { } > ,
165165 ) : Partial < VariableSizeTreeState < { } > > {
166- const { children : component , itemData : treeData } = props ;
166+ const { children : component , itemData : treeData , treeWalker} = props ;
167+ const { treeWalker : oldTreeWalker , order} = state ;
167168
168169 return {
169170 component,
170171 treeData,
171- ...computeTree ( { refreshNodes : true } , props , state ) ,
172+ ...( treeWalker !== oldTreeWalker || ! order
173+ ? computeTree ( { refreshNodes : true } , props , state )
174+ : null ) ,
172175 } ;
173176 }
174177
@@ -179,17 +182,12 @@ export default class VariableSizeTree<T> extends React.PureComponent<
179182
180183 this . getItemSize = this . getItemSize . bind ( this ) ;
181184
182- const initialState : VariableSizeTreeState < T > = {
185+ this . state = {
183186 component : props . children ,
184- order : [ ] ,
185187 recomputeTree : this . recomputeTree . bind ( this ) ,
186188 records : { } ,
187189 resetAfterId : this . resetAfterId . bind ( this ) ,
188- } ;
189-
190- this . state = {
191- ...initialState ,
192- ...computeTree ( { refreshNodes : true } , props , initialState ) ,
190+ treeWalker : props . treeWalker ,
193191 } ;
194192 }
195193
@@ -215,7 +213,7 @@ export default class VariableSizeTree<T> extends React.PureComponent<
215213 shouldForceUpdate : boolean = false ,
216214 ) : void {
217215 this . list . current ?. resetAfterIndex (
218- this . state . order . indexOf ( id ) ,
216+ this . state . order ! . indexOf ( id ) ,
219217 shouldForceUpdate ,
220218 ) ;
221219 }
@@ -225,7 +223,7 @@ export default class VariableSizeTree<T> extends React.PureComponent<
225223 }
226224
227225 public scrollToItem ( id : string | symbol , align ?: Align ) : void {
228- this . list . current ?. scrollToItem ( this . state . order . indexOf ( id ) || 0 , align ) ;
226+ this . list . current ?. scrollToItem ( this . state . order ! . indexOf ( id ) || 0 , align ) ;
229227 }
230228
231229 public render ( ) : React . ReactNode {
@@ -235,7 +233,7 @@ export default class VariableSizeTree<T> extends React.PureComponent<
235233 < VariableSizeList
236234 { ...rest }
237235 itemData = { this . state }
238- itemCount = { this . state . order . length }
236+ itemCount = { this . state . order ! . length }
239237 // tslint:disable-next-line:no-unbound-method
240238 itemSize = { itemSize || this . getItemSize }
241239 ref = { this . list }
@@ -248,6 +246,6 @@ export default class VariableSizeTree<T> extends React.PureComponent<
248246 private getItemSize ( index : number ) : number {
249247 const { order, records} = this . state ;
250248
251- return records [ order [ index ] as string ] . height ;
249+ return records [ order ! [ index ] as string ] . height ;
252250 }
253251}
0 commit comments