react-tree icon indicating copy to clipboard operation
react-tree copied to clipboard

[enhancement] Add togglable windowing and the ability to lazily load data, for large dataset optimisations

Open JamesYeoman opened this issue 3 years ago • 1 comments

What I mean by windowing is the use of virtual lists via react-virtualized in order to improve performance for large datasets, by only rendering items that would be visible.

As for the lazily loaded data, it would go as follows: when a node is expanded, if it's children aren't in a cache, then a callback would be invoked, which receives the ID of the expanded node. This callback would need to return a list of nodes (the children of the expanded node).

The lazily loading is a nice-to-have, but the windowing would be a great performance addition for large datasets. It would be overkill for small datasets, which is why it would need to be optional/togglable.

JamesYeoman avatar Mar 21 '22 14:03 JamesYeoman

Hi @JamesYeoman -- this might require some more work than I have time for at the moment.

I need to work on the internals and exactly how it would handle windowing (especially if you were to expand a node near the scroll obserer listener and trigger the window. If you've got time, I'd love to see a PR I can review and merge.

ortonomy avatar Apr 12 '22 16:04 ortonomy