javascript - 快速访问json树数据结构
问题描述
我有一个包含树数据结构的减速器(总共超过 100_000 个项目)。这是数据的样子
[
{
text: 'A',
expanded: false,
items:
[
{
text: 'AA',
expanded: false
},
{
text: 'AB',
expanded: false,
items:
[
{
text: 'ABA',
expanded: false,
},
{
text: 'ABB',
expanded: false,
}
]
}
]
},
{
text: 'B',
expanded: false,
items:
[
{
text: 'BA',
expanded: false
},
{
text: 'BB',
expanded: false
}
]
}
]
我需要做的是使用文本作为 id 快速访问这些项目(每次用户单击树视图中的项目时都需要切换扩展)。我应该将整个结构复制到字典中还是有更好的方法?
解决方案
我认为您可能意味着处理扩展更改的成本非常高(因为您可能关闭/打开具有 100000 个叶子的节点,然后通知 100000 个 UI 项)。
然而,这让我担心,因为我希望只存在扩展的 UI 项(例如,你没有隐藏所有的 React 元素,每个都坐在那里并监视 Redux 选择器,以防它的树的一部分变得可见)。
只要元素在不展开时不存在,那么为什么除了它的直接父级之外的任何东西都知道扩展的状态,并且如果它也在屏幕上,只有父级知道呢?
我建议扩展状态应该是例如 React 状态而不是 Redux 状态。如果它们在屏幕上,那么它们会被展开,可选地,它们的子元素会被展开(在父 UI 元素中作为状态保持),如果它们不在屏幕上,它们就不存在。
推荐阅读
- c++ - std::unique_ptr 字符数组
- android - 为什么Android磁场传感器沿重力方向分量很大?
- javascript - 如何导入 JavaScript 库的源文件?
- java - 如何从对象调用覆盖方法
- angular - localhost:4200 和 localhost:4200/projectName 有什么区别?
- highcharts - 使用 highcharts-vue 和 axios 绘制可变数量的系列
- spring - 用于实践的 Spring 和 Hibernate 项目
- tcl - 如何从 -command 选项中的代码获取结果
- reactjs - 如何为每个 Material-UI TableRow 添加 react-router?
- python - python pandas不计算订单对