Tree 树形控件
展示组织架构、文件目录、分类列表等层级数据,支持单选多选、搜索、拖拽。
何时使用
- 需要展示树形层级结构时。
基础用法
默认为单选模式,每一级菜单项均可选择。
文件夹 1
文件夹 2
导入
更多示例
多选
设置 multiple 进行多选。多选时所有子项都被选择时自动勾选父项。
可搜索
通过设置 filterTreeNode 属性开启搜索功能。
仅展示匹配结果
设置 showFilteredOnly 只展示搜索匹配的节点。
默认展开
展开受控
连接线
通过 showLine 设置节点之间的连接线。
目录树模式
通过 directory 属性显示为目录树模式,自带目录图标。
自定义图标
通过节点的 icon 属性添加自定义图标。
自定义节点内容
通过 #label slot 自定义节点标签。
禁用
节点选中关系
多选时设置 checkRelation 为 unRelated,节点间选中互不影响。
仅返回叶子节点
设置 leafOnly 使 onChange 回调仅返回叶子节点。
异步加载
通过 loadData 动态加载数据,需要在数据中传入 isLeaf 标明叶子节点。
受控
API
Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
treeData | TreeNodeData[] | [] | 树数据 |
modelValue | string | number | (string | number)[] | - | 当前选中值(v-model) |
defaultValue | string | number | (string | number)[] | - | 默认选中值 |
multiple | boolean | false | 是否多选 |
disabled | boolean | false | 是否禁用 |
defaultExpandAll | boolean | false | 默认展开所有 |
expandAll | boolean | false | 展开所有(数据更新时生效) |
defaultExpandedKeys | string[] | - | 默认展开的 key |
expandedKeys | string[] | - | 展开的 key(v-model) |
autoExpandParent | boolean | false | 自动展开父节点 |
showLine | boolean | false | 是否显示连接线 |
blockNode | boolean | true | 节点占据整行 |
directory | boolean | false | 目录树模式 |
filterTreeNode | boolean | ((input, node) => boolean) | false | 开启搜索 |
searchPlaceholder | string | 搜索 | 搜索框占位文字 |
showFilteredOnly | boolean | false | 仅展示匹配节点 |
treeNodeFilterProp | string | label | 搜索匹配属性 |
checkRelation | related | unRelated | related | 节点选中关系 |
leafOnly | boolean | false | 仅返回叶子节点 |
loadData | (node) => Promise<void> | - | 异步加载 |
draggable | boolean | false | 是否可拖拽 |
class | string | - | 附加类名 |
Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
change | 选中变化 | (value, node) |
select | 选中节点 | (node, selected: boolean) |
expand | 展开/收起 | (keys, node) |
search | 搜索 | (value, filteredKeys) |
Slots
| 名称 | 说明 | 参数 |
|---|---|---|
label | 自定义节点标签 | { node, level } |
icon | 自定义图标 | { node, level, expanded } |
trailing | 后置内容 | { node, level, expanded } |
类型
TreeNodeData:
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
label | string | - | 标签 |
value | string | number | - | 值 |
key | string | 用 value | 唯一标识 |
children | TreeNodeData[] | - | 子节点 |
disabled | boolean | false | 是否禁用 |
isLeaf | boolean | - | 是否叶子节点 |
icon | VNode | - | 自定义图标 |
defaultExpanded | boolean | false | 是否默认展开 |
extra | string | - | 副文本 |
多选行为
| checkRelation | 说明 |
|---|---|
related | 父子关联:选中父节点自动选中所有子节点,子节点全选时自动勾选父节点(含半选状态) |
unRelated | 父子不关联:各节点选中状态互不影响 |
国际化
搜索占位文案默认跟随全局语言(zh-CN / zh-TW / en-US)。
