我获取到了父级节点,我想要根据传递进来的父级节点获取到这个节点下的数据,并给对象进行重新赋值。
// 获取与指定 list item 关联的 treeData id就是父级节点
// 如果传入的id值没有找到这条数据,就根据传递的id值找到这条数据并重新给treeDataMap 进行赋值
treeDataMap 是一个数组对象
数据结构是这样的:
-------------------------------------------------------------------------------------------------------------------------------------
SL-171848: Array(1)
0: children
: Array(2)
0: {title: {…}, value: 'SL-258005', children: Array(0)}
1: {title: {…}, value: 'SL-990614', children: Array(0)}
----------------------------------------- -------------------------------------------------------------------------------------------
const getTreeDataForListItem = (id) => {
debugger
if (treeDataMap[id]) {
return treeDataMap[id];
}
const treeData = fetchDataById(id); // 根据id值获取数据
treeDataMap[id] = treeData; // 将获取到的数据赋值给treeDataMap
return treeData;
};
const fetchDataById = (id) => {
debugger
// 使用递归函数遍历整个树形数据结构
const traverseTreeData = (data, targetId) => {
debugger
for (let i = 0; i < data.length; i++) {
const node = data[i];
// 如果当前节点的 ID 匹配目标 ID,则返回该节点
if (node.value === targetId) {
debugger
return node;
}
// 否则,递归遍历当前节点的子节点
const children = node.children || [];
const result = traverseTreeData(children, targetId);
if (result) {
return result;
}
}
// 如果未找到与目标 ID 匹配的节点,则返回 null
return null;
};
// 调用递归函数以查找与目标 ID 匹配的节点
const resultNode = traverseTreeData(treeData, id);
// 返回结果节点的数据属性
return resultNode ? resultNode.data : null;
};
大概要实现的效果就行 根据传递进来的节点id值,获取到这个属于这个id的数据,把数据赋值给treeDataMap对象。