1. 使用antd4的Tree组件,Tree不支持平铺数据,需要自己转换成children套children的数据,使用以下方法
const toTree = (nodes) => {
if (!Array.isArray(nodes)) {
return []
}
const node = cloneDeep(nodes)
node.forEach(item => delete item.children)
// 定义对象保存数据
const map = {}
node.forEach(item => {
map[item.id] = item
})
const newNode = []
node.forEach(dt => {
const parents = map[dt.pid]
if (map[dt.id]) {
// 看是否还存在子节点
const findIndex = node.findIndex(
item => item.pid === dt.id
)
// 不存在子节点把isLeaf设置成true
if (findIndex === -1) {
newdt.isLeaf = true
}
if (parents) {
; (parents.children || (parents.children = [])).push(dt)
} else {
newNode.push(dt)
}
}
})
return newNode
}
2. 若是使用antd的TreeSelect组件,可以使用treeDataSimpleMode属性