const fn = (code, treeData) => {
if(!treeData.length) return []
for(let i = 0
const treeItem = treeData[i]
if(treeItem.code === code) return [treeItem]
const path = fn(code,treeItem.children || [])
if(path.length > 0) return [treeItem,...path]
}
return []
}
使用场景:多层表格行编辑后,触发更新state,来触发table视图更新
参数:
code:传入具有唯一性的标示 如id,key等等
treeData:元数据,可以是一个数组([{}])也可以是可深成嵌套的树
editData:需要替换的数据({})
const replaceByKey = (code, treeData, editData) => {
if (!treeData.length) return []
return treeData.map((item) => {
let newItem = {...item}
if (newItem.key === code) {
newItem = {
...newItem,
...editData,
children: newItem.children
}
}
return {
...newItem,
children: replaceByKey(code, newItem.children || [], editData)
}
})
}