antd tree异步加载合并tree

文章演示了在React中使用AntDesign的Tree组件处理异步加载数据的情况,特别是当数据需要合并部门和员工树时。通过编写updateTreeData函数和onLoadData回调,实现了在无后端处理数据的情况下动态合并并更新树结构。
摘要由CSDN通过智能技术生成

antd tree 异步加载,合并多颗树

异步加载tree 这时有部门树与员工树,在部门下面有员工与部门,在后端不处理数据的情况下需要我们手动去处理数据,下面做一个简单的演示

import React, { useState } from 'react';
import { Tree } from 'antd';

interface DataNode {
  title: string;
  key: string;
  isLeaf?: boolean;
  children?: DataNode[];
}

// 这个方法是用给父节点来挂载children的
const updateTreeData = (list: DataNode[], key: React.Key, children: DataNode[]): DataNode[] =>
  list.map((node) => {
    if (node.key === key) {
      return {
        ...node,
        children,
      };
    }
    if (node.children) {
      return {
        ...node,
        children: updateTreeData(node.children, key, children),
      };
    }
    return node;
  });

const App: React.FC = () => {
  const [treeData, setTreeData] = useState([]);

  const onLoadData = ({ key, children }: any) => 
    
  new Promise<void>((resolve) => {
   	  let result = []
      // 假设这是一个接口
      getUsertree(key).then(res => result.push(...res.data))
      getDepartment(key).then((res) => result.push(...res.data))
      // 原数据, key, 要更新的 children 
      settreeData(updateTreeData(treeData, key, result))
        resolve();
      }, 1000);
    });

	// 假设这里初始拿到数据	
  useEffect(() => {
  		getInitTree().then(res => setTreeData(res.data))
  },[]) 
  return <Tree loadData={onLoadData} treeData={treeData} />;
};

export default App;

因为有时候一个部门下有员工的同时,又有部门,所以需要部门与员工的数据,进行合并然后再交给

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值