字数越少功能越吊,该方法支持无限层级,后面附加效果图
// 由于我的组件支持多选,所以我的dataList数据源是个二级数组,多加了一层map
dataList.map(itemList => {
// 声明子集数组锚点下标,首先确保组件返回的数组长度与树形数据源层级对等
let index = 0
// 递归方法,参数tree为树状数据源
function recursion(tree) {
// 循环树形参数
tree.map(item => {
// 先判断一波是不是这个子集
if(item.id == itemList[index]) {
// disabled只需要加在子集上,所以只需要判断该层级有无children即可
if(item.children) {
// 有则直接锚点++,将该层级作为参数递归
index++
recursion(item.children)
} else {
// 无children则为最底层,直接追加disabled完事
Object.assign(item, { disabled: true })
}
}
})
}
// 执行递归,抛入树形数据源,不写不执行递归!!!
recursion(treeList)
})
dataList数据格式(组件返回格式)
treeList数据格式
效果图