2022.8.5 antd tree动态加载

234 阅读1分钟
function updateTreeData(list: DataNode[], key: React.Key, children: DataNode[]): DataNode[] {
    return list.map((node: any) => {    //遍历树,并返回新树\
      if (node.absPath === key) {
        return {      
          ...node,
          children,
        };
      }
      if (node.children) {
        return {
          ...node,
          childrenupdateTreeData(node.children, key, children),
        };
      }
      return node;
    });
  }

  const onLoadData = ({ key, children }: any) =>    //加载节点\
    new Promise<void>(resolve => {
      if (children) {
        resolve();
        return;
      }
      getSubDirectory(encodeURI(key)).then(res => {
        setTreeData((treeData) =>
          updateTreeData(treeData, key, res)      //原列表,当前节点的key,当前节点children\
        )
      })
      resolve();
    });