Skip to content

Commit 58ad498

Browse files
author
liyuan-meng
committed
fix: [Tree] 解决搜索节点,若匹配到的节点有多级,应全部展示,实际上只展示了匹配到节点的下一级的问题
1 parent a8d08cb commit 58ad498

1 file changed

Lines changed: 15 additions & 34 deletions

File tree

src/components/tree/store.js

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -444,43 +444,24 @@ class Store {
444444
* @param searchText
445445
*/
446446
searchNode = (data, searchText) => {
447-
const cloneData = [...data];
448-
if (!searchText) {
449-
return cloneData;
450-
}
451-
452-
const search = (node) => {
453-
return node.filter((item) => {
454-
// 当前节点匹配
455-
if (item.name.indexOf(searchText) !== -1) {
456-
if (
457-
item.children &&
458-
Array.isArray(item.children) &&
459-
item.children.length
460-
) {
461-
const children = search(item.children);
462-
if (children.length) {
463-
Object.assign(item, { children, isUnfold: true });
464-
} else {
465-
Object.assign(item, { isUnfold: false });
466-
}
467-
}
447+
const regx = RegExp(searchText);
448+
return data?.filter(node => {
449+
if (regx.test(node?.name)) {
450+
node.isUnfold = true;
451+
return node;
452+
} else if (node?.children?.length) {
453+
const filteredChildren = this.searchNode(node.children, searchText);
454+
if (filteredChildren?.length) {
455+
node.children = filteredChildren;
456+
node.isUnfold = true;
468457
return true;
469458
}
470-
471-
// 当前节点未匹配: 对子项进行匹配
472-
if (Array.isArray(item.children) && item.children.length) {
473-
Object.assign(item, {
474-
children: search(item.children),
475-
isUnfold: true,
476-
});
477-
return item.children.length > 0;
478-
}
479459
return false;
480-
});
481-
};
482-
return search(cloneData);
483-
};
460+
} else {
461+
return false;
462+
}
463+
});
464+
}
484465
}
485466

486467
export default Store;

0 commit comments

Comments
 (0)