我如何使用material-ui的TreeView,其中所有数据都在单一真实来源的javascript数据结构中,并在修改数据时避免对未更改的子树部分进行重新渲染(对输入使用身份检查)(添加/删除/重命名节点、更改选择、更改打开/关闭状态等)?https://material-ui.com/components/tree-view/上没有这样的示例,并且使用“丰富对象”示例来表示大型宽树(约 1000 个元素,例如在完整二叉树中),在我的计算机上重新渲染所有内容大约需要一秒钟。
通过手动执行或使用不可变数据结构库,输入树可以在修改时重用先前渲染的子树。例如,给定以下树,
A
/ \
B C
/ \ \
D E F
Run Code Online (Sandbox Code Playgroud)
如果您想向 F 添加子 X,那么您将为 X、F、C 和 A 创建新节点,但可以保留 B、D 和 E 节点。
对于大型宽树,我们如何利用这一点来获得可接受的性能(我想说<50ms,理想情况下只有几毫秒)?