Skip to content

Tree 树

对于文件夹、分类目录、组织架构等层级较多的内容,树可以清楚显示他们的层级关系,并具有展开、收起、选择等交互功能。

基础用法

为每个节点赋予全局唯一的 key(必填项),title 为该节点显示的内容。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

节点占一行

节点占据一整行。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

多选

Tree 设置 multiple 属性为true,可以启用多选。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

带复选框的树

为 Tree 添加 checkable 属性即可使树具有复选框功能,可以用 defaultCheckedKeys 指定复选框默认选中的节点。

父子关联

主干 1
叶子 1-1
分支 1-2
叶子 1-2-1
叶子 1-2-2
主干 2
分支 2-1
叶子 2-1-1
叶子 2-1-2
叶子 2-2

不关联

主干 1
叶子 1-1
分支 1-2
叶子 1-2-1
叶子 1-2-2
主干 2
分支 2-1
叶子 2-1-1
叶子 2-1-2
叶子 2-2

双向绑定

selectedKeys 、 checkedKeys 、 expandedKeys 属性均可受控,不仅支持 v-model ,还可以在对应的 select / check / expand 事件中自行控制如何更新属性值。

主干 1
叶子 1-1
分支 1-2
叶子 1-2-1
主干 2
叶子 2-1
叶子 2-2

动态加载

动态加载节点。

主干 1
主干 2
分支 2-1

拖拽

可拖拽的树节点。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

设置回填方式

为 Tree 添加 checkedStrategy 可以设置选中时的回填方式。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

当前选择节点:

显示连接线

为 Tree 添加 showLine 属性即可使树具有连接线。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
叶子 1-1-2-1
叶子 1-1-3
分支 1-2
分支 1-3
叶子 1-3-1
叶子 1-3-2
主干 2
主干 3
分支 3-1
叶子 3-1-1
叶子 3-1-2

定制节点图标

节点图标可以通过 tree 的 icon 插槽全局指定,也可以通过节点的 icon 属性单独指定。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

定制组件图标

节点的图标 loadingIcon, switcherIcon,同时支持在 tree 和 node 两个纬度上定制,其中 node 的优先级较高。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

定制额外节点

Tree 提供了名为 extra 的 Slot, 可以在节点上定制额外的内容。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

虚拟列表

通过指定 virtualListProps 来开启虚拟列表,在大量数据时获得高性能表现。

1-1
1-1-1
1-1-1-1
1-1-1-2
1-1-1-3
1-1-1-4
1-1-1-5
1-1-1-6
1-1-1-7
1-1-1-8
1-1-1-9
1-1-1-10
1-1-2
1-1-2-1
1-1-2-2
1-1-2-3
1-1-2-4
1-1-2-5
1-1-2-6
1-1-2-7
1-1-2-8
1-1-2-9
1-1-2-10
1-1-3
1-1-3-1
1-1-3-2
1-1-3-3
1-1-3-4
1-1-3-5
1-1-3-6

搜索树

展示如何实现搜索树的效果。

自定义 data 的字段名称

通过 fieldNames 字段可以自定义 data 的字段名。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

不同尺寸

不同尺寸的树。

主干 1
分支 1-1
叶子 1-1-1
叶子 1-1-2
分支 1-2
叶子 1-2-1

Tree API

Tree Attributes

参数名描述类型默认值
size尺寸Stringmedium
block-node节点是否占据一行Booleanfalse
default-expand-all是否默认展开父节点Booleantrue
multiple是否支持多选Booleanfalse
checkable是否在节点前添加复选框Booleanfalse
selectable是否支持选择Booleantrue
check-strictly是否取消父子节点关联Booleanfalse
checked-strategy定制回填方式
all: 返回所有选中的节点
parent: 父子节点都选中时只返回父节点
child: 只返回子节点
Stringall
default-selected-keys默认选中的树节点Array-
selected-keys / v-model选中的树节点Array-
default-checked-keys默认选中复选框的树节点Array-
checked-keys / v-model选中复选框的树节点Array-
default-expanded-keys默认展开的节点Array-
expanded-keys / v-model展开的节点Array-
data传入 data, 生成对应的树结构Array[]
field-names指定节点数据中的字段名Object-
show-line是否展示连接线Booleanfalse
load-more异步加载数据的回调,返回一个 PromiseFunction-
draggable是否可以拖拽Booleanfalse
allow-drop拖拽时是否允许在某节点上释放Function-
virtual-list-props传递虚拟列表属性,传入此参数以开启虚拟滚动,VirtualListPropsObject-
default-expand-selected是否默认展开已选中节点的父节点Booleanfalse
default-expand-checked是否默认展开已选中复选框节点的父节点Booleanfalse
auto-expand-parent是否自动展开已展开节点的父节点Booleantrue
half-checked-keys / v-model半选状态的节点.仅在 checkable 且 checkStrictly 时生效Array-
only-check-leaf开启后 checkedKeys 只处理叶子节点,父节点状态由子节点决定(仅在 checkable 且 checkStrictly 为 false 时生效)Booleanfalse
animation是否开启展开时的过渡动效Booleantrue
action-on-node-click点击节点的时候触发的动作String-

Tree Events

事件名描述参数
select点击树节点时触发Function
check点击树节点复选框时触发。Function
expand展开/关闭Function
drag-start节点开始拖拽-
drag-end节点结束拖拽Function
drag-over节点被拖拽至可释放目标Function
drag-leave节点离开可释放目标Function
drop节点在可释放目标上释放Function

Tree Methods

方法名描述参数返回值
scrollIntoView虚拟列表滚动某个元素Function-
getSelectedNodes获取选中的节点-TreeNodeData[]
getCheckedNodes获取选中复选框的节点。支持传入 checkedStrategy,没有传则取组件的配置。FunctionTreeNodeData[]
getHalfCheckedNodes获取复选框半选的节点-TreeNodeData[]
getExpandedNodes获取展开的节点-TreeNodeData[]
checkAll设置全部节点的复选框状态Function-
checkNode设置指定节点的复选框状态Function-
selectAll设置全部节点的选中状态Function-
selectNode设置指定节点的选中状态Function-
expandAll设置全部节点的展开状态Function-
expandNode设置指定节点的展开状态Function-

Tree Slots

参数名描述参数
title标题-
extra渲染额外的节点内容-
drag-icon定制 drag 图标node
loading-icon定制 loading 图标-
switcher-icon定制 switcher 图标-
icon定制节点图标node

TreeNodeData

参数名描述类型默认值
key唯一标示StringNumber-
title该节点显示的标题String-
selectable是否允许选中Booleanfalse
disabled是否禁用节点Booleanfalse
disableCheckbox是否禁用复选框Booleanfalse
checkable是否显示多选框Booleanfalse
draggable是否可以拖拽Booleanfalse
isLeaf是否是叶子节点。动态加载时有效Booleanfalse
icon节点的图标Function-
switcherIcon定制 switcher 图标,优先级大于 treeFunction-
loadingIcon定制 loading 图标,优先级大于 treeFunction-
dragIcon定制 drag 图标,优先级大于 treeFunction-
children子节点Array-

TreeFieldNames

参数名描述类型默认值
key指定 key 在 TreeNodeData 中的字段名Stringkey
title指定 title 在 TreeNodeData 中的字段名Stringtitle
disabled指定 disabled 在 TreeNodeData 中的字段名Stringdisabled
children指定 children 在 TreeNodeData 中的字段名Stringchildren
isLeaf指定 isLeaf 在 TreeNodeData 中的字段名StringisLeaf
disableCheckbox指定 disableCheckbox 在 TreeNodeData 中的字段名StringdisableCheckbox
checkable指定 checkable 在 TreeNodeData 中的字段名Stringcheckable
icon指定 icon 在 TreeNodeData 中的字段名Stringcheckable

VirtualListProps

参数名描述类型默认值
height可视区域高度NumberString-
threshold开启虚拟滚动的元素数量阈值,当数据数量小于阈值时不会开启虚拟滚动。Number-
isStaticItemHeight(已废除)元素高度是否是固定的。Booleanfalse
fixedSize元素高度是否是固定的。Booleanfalse
estimatedSize元素高度不固定时的预估高度。Number-
buffer视口边界外提前挂载的元素数量。Number10