antd 目录树实现
话不说多 先看图
首先我们这里是要在项目内做一个编辑器功能。做编辑器目录树就必不可少。如何根据多维数组作出自己想要的目录结构,请看下面代码
const data = [ { catalog:'目录一', isDirectory:true child:[ { childCatalog:'子目录一', isDirectory:true childChild:[...里面可能还有很多] }, { childCatalog:'子目录二', isDirectory:trueÏ }, ] }, { catalog:'目录二', isDirectory:false } ] //大致数据结构如上 function forList(data) { let showView = [] for (let i in data) { if (data[i].isDirectory && data[i].childs) { //是目录 并且有子目录 let obj = <SubMenu key={'one' + data[i].name} title={data[i].name} draggable="true" onContextMenu={() => { onContextMenuClick(data[i]) }}> {forList(data[i].childs)} </SubMenu> showView.push(obj) } else if (!data[i].isDirectory) { //是文件 let obj = <Menu.Item key={'file' + data[i].name} onClick={() => { onMenuClick(data[i]) }}>{data[i].name}</Menu.Item> showView.push(obj) } else { //是目录,但是没子目录 let obj = <SubMenu key={'fileno' + data[i].name} title={data[i].name}> </SubMenu> showView.push(obj) } } return showView }