antd 树组件异步加载动态渲染
//树组件
<antTree
checkable
onCheck={this.onCheck}
checkedKeys={this.checkedKeys}
//onSelect={this.onSelect}
//selectedKeys={this.selectedKeys}
loadData={this.onLoadData}
>
{this.renderTreeNodes(this.treeData)}
</antTree>
//渲染节点方法 renderTreeNodes(data){ return data.map((item) => { //有children就递归渲染 if (item?.children) { return ( <antTreeNode title={item.name} key={item.code} dataRef={item}> {this.renderTreeNodes(item?.children)} </antTreeNode> ); } //没有children就直接返回节点 return <antTreeNode title={item.name} key={item.code} dataRef={item} isLeaf={item.parentFlag != '1' ? true : false} />; }); },
//异步加载数据方法 onLoadData(treeNode){ console.log(treeNode) return new Promise((resolve:any) => { if (treeNode.children) { resolve(); return; } //子item的参数和首次的参数 let params = { id:treeNode.dataRef.id||treeNode.id, vehicleType:treeNode.dataRef.vehicleType||treeNode.vehicleType }
//异步请求获取数据就在这触发 Service.queryVehicleStruct(params).then((res: any) => { //这一步会将得到的数据注入到treeNode的子数组 treeNode.dataRef.children = res; //这一步会触发重新渲染,此时子数组已被添加到treeData this.renderTreeNodes(this.treeData); resolve(); }).catch((e) => { message.error(e.message||'网络错误'); }).finally(()=>{ //this.loading = false; }) }); },
//方法 //复选框勾选 onCheck(checkedKeys) { this.checkedKeys = checkedKeys; console.log(this.checkedKeys); }, //点击树节点 onSelect(selectedKeys, info){ this.selectedKeys = selectedKeys; },
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结