我用的是Element Plus的Tree组件,现在点某个节点能拿到当前节点数据,但想拿到从根到该节点的完整路径数组,试了node.parent好像不行。
官方文档里没找到直接的方法,有没有人知道怎么递归往上找父节点啊?比如像getParentPath(node)这种。
const handleNodeClick = (data, node) => {
console.log('当前节点:', data);
// 想在这里拿到 ['root', 'parent', 'current'] 这样的路径
}
在handleNodeClick里调用getParentPath(node)就能拿到路径数组了。
直接上代码:
或者如果你只要路径上的 label:
几个注意点:
node.parent 对根节点返回的是 null,所以 while 循环会自动停掉,不用担心死循环。
如果你想用 Tree 的方法,也可以通过 ref 调用 getNode(key) 获取节点实例后再往上找,但直接用事件回调里的 node 参数更直接。
还有一种方式是通过 default-expand-all 展开所有节点后,用 getCheckedKeys + getHalfCheckedKeys 配合 props 中的 checkStrictly 来搞,但你这个场景用 parent 递归最简洁。