Skip to content

Commit 8ff7693

Browse files
authored
Merge pull request #38 from Lodin/fix/tree-walker-memo
Remember a new treeWalker provided to the component
2 parents a5116ad + 8ffa270 commit 8ff7693

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

__tests__/FixedSizeTree.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,20 @@ describe('FixedSizeTree', () => {
184184
expect(treeWalkerSpy).not.toHaveBeenCalled();
185185
});
186186

187+
it('remembers a new treeWalker to avoid further re-computation if treeWalker is the same', () => {
188+
treeWalkerSpy = jest.fn(treeWalker);
189+
190+
component.setProps({
191+
treeWalker: treeWalkerSpy,
192+
});
193+
194+
component.setProps({
195+
treeWalker: treeWalkerSpy,
196+
});
197+
198+
expect(treeWalkerSpy).toHaveBeenCalledTimes(1);
199+
});
200+
187201
describe('component instance', () => {
188202
let treeInstance: FixedSizeTree<ExtendedData>;
189203

__tests__/VariableSizeTree.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,20 @@ describe('VariableSizeTree', () => {
194194
expect(treeWalkerSpy).not.toHaveBeenCalled();
195195
});
196196

197+
it('remembers a new treeWalker to avoid further re-computation if treeWalker is the same', () => {
198+
treeWalkerSpy = jest.fn(treeWalker);
199+
200+
component.setProps({
201+
treeWalker: treeWalkerSpy,
202+
});
203+
204+
component.setProps({
205+
treeWalker: treeWalkerSpy,
206+
});
207+
208+
expect(treeWalkerSpy).toHaveBeenCalledTimes(1);
209+
});
210+
197211
describe('component instance', () => {
198212
let treeInstance: VariableSizeTree<ExtendedData>;
199213

src/Tree.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ class Tree<
280280
return {
281281
component,
282282
treeData,
283+
treeWalker,
283284
...(treeWalker !== oldTreeWalker || !order
284285
? computeTree(props, state, {refreshNodes: true})
285286
: null),
@@ -295,7 +296,6 @@ class Tree<
295296
component: props.children,
296297
recomputeTree: this.recomputeTree.bind(this),
297298
records: {},
298-
treeWalker: props.treeWalker,
299299
} as TState;
300300
}
301301

0 commit comments

Comments
 (0)