Я использую реагирующее сортируемое дерево и хочу иметь возможность фильтровать. Я получаю отфильтрованные узлы с нашего внутреннего сервера, а затем сокращаю текущее дерево для отображения отфильтрованных узлов. Эта часть работает нормально, но когда я выбираю детей, мое древовидное состояние портится, и я подозреваю, что это может быть связано с javascript ссылками.
Код ниже: FilteredNodes с сервера
static filterNodes = (map, processingStatuses, filteredNodes) => (newTree, node) => {
const docNode = cloneDeep(TreeUtils.docNodeFromTreeNode(map, node));
const thisNodePasses = filteredNodes.findIndex(findNode => findNode.id === docNode.id);
if (thisNodePasses >= 0) {
newTree.push({ ...node });
return newTree;
}
if (docNode.children && docNode.children.length) {
const filteredChildren = docNode.children.reduce(
FilterUtils.filterNodes(map, processingStatuses, filteredNodes),
[],
);
if (filteredChildren.length) {
newTree.push({
...node,
children: [...filteredChildren],
});
}
}
return newTree;
}
static getFilteredTree = (tree, map, processingStatuses, filteredNodes) => {
return filteredNodes.length ?
tree.reduce(FilterUtils.filterNodes(map, processingStatuses, filteredNodes), []) : tree;
}
Как мне обращаться с фильтрацией?