首页 > 解决方案 > 使用 React 可排序树进行过滤

问题描述

我正在使用反应可排序树并希望能够过滤。我从我们的后端服务器获取过滤后的节点,然后对当前树进行缩减以显示过滤后的节点。这部分工作正常,但是当我获取孩子时,我的树状态变得混乱,我怀疑这可能是由于 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;
  }

我应该如何处理过滤?

标签: javascriptreactjsfilteringreduce

解决方案


推荐阅读