diff --git a/components/LeftTree/Basic/index.js b/components/LeftTree/Basic/index.js index 42280b6..935a584 100644 --- a/components/LeftTree/Basic/index.js +++ b/components/LeftTree/Basic/index.js @@ -1,5 +1,6 @@ import { Input, Tree } from "antd"; import { useEffect, useState } from "react"; +import { getTreeNodePaths } from "../../../utils"; const { Search } = Input; @@ -71,35 +72,16 @@ const BasicLeftTree = (props) => { setAutoExpandParent(false); }; - const getNodePaths = (data, targetId, idKey, childrenKey, path = [], isIncludeOneself) => { - for (let i = 0; i < data.length; i++) { - const node = data[i]; - const newPath = [...path, node]; - - // 找到目标节点,根据isIncludeOneself决定是否包含自身 - if (node[idKey] === targetId) { - if (isIncludeOneself) - return newPath; // 包含自身 - else - return path; // 不包含自身,只返回父节点路径 - } - - // 递归查找子节点 - if (node[childrenKey] && node[childrenKey].length > 0) { - const result = getNodePaths(node[childrenKey], targetId, idKey, childrenKey, newPath, isIncludeOneself); - if (result) { - return result; - } - } - } - - return null; - }; - const handleSelect = (selectedKeys, event) => { if (selectedKeys.length > 0) { const selectedNodeId = selectedKeys[0]; - const parentNodes = getNodePaths(treeData, selectedNodeId, idKey, childrenKey, onGetNodePathsIsIncludeOneself); + const parentNodes = getTreeNodePaths({ + data: treeData, + targetId: selectedNodeId, + idKey, + childrenKey, + isIncludeOneself: onGetNodePathsIsIncludeOneself, + }); onGetNodePaths?.(parentNodes); } onSelect?.(selectedKeys, event);