Skip to content

Tree 树形控件 ​

BzTree 是基于 Element Plus ElTreeV2 封装的高性能虚拟化树形控件,适用于大数据量的层级数据展示。组件会自动撑满容器高度,内部使用 ResizeObserver 动态跟踪容器尺寸变化。

注意:BzTree 基于 ElTreeV2 虚拟化树组件,数据要求为扁平化 children 结构(非懒加载),支持所有 ElTreeV2 的对外方法和属性。

基础用法 ​

通过 data 传入树形数据,使用 height 设置组件高度。

基础用法
Vue Demo
可直接复制并在项目中使用

深层数据结构 ​

支持任意深度的嵌套数据。

深层数据
Vue Demo
可直接复制并在项目中使用

复选框模式 ​

通过 showCheckbox 开启复选框,配合 defaultCheckedKeys 设置默认选中项。

复选框
Vue Demo
可直接复制并在项目中使用

节点事件 ​

支持 node-click 和 current-change 等事件,disabled 节点不会被高亮选中。

节点事件
Vue Demo
可直接复制并在项目中使用

自定义节点内容 ​

通过默认插槽自定义每个节点的渲染内容。

自定义节点
Vue Demo
可直接复制并在项目中使用

Props ​

参数说明类型默认值
data树形数据,需包含 id、label、children 字段Record<string, any>[][]
height树组件高度,支持 CSS 单位string'100%'
emptyText数据为空时展示的文本string'暂无数据'
expandOnClickNode是否在点击节点时展开或收缩节点,false 则仅点击箭头图标触发booleantrue
defaultExpandedKeys默认展开的节点 key 数组string[]-
showCheckbox是否展示复选框booleanfalse
checkStrictly复选框是否严格遵循父子不互相关联booleanfalse
defaultCheckedKeys默认选中节点的 key 数组any[]-
currentNodeKey当前选中节点的 keystring | number-
indent父子节点之间的缩进间距 (px)number16
itemSize单个节点高度 (px)number40
scrollbarAlwaysOn是否始终展示滚动条booleanfalse
highlightCurrent是否高亮当前选中的节点booleantrue

Events ​

事件名说明回调参数
node-click节点被点击时触发(data, node, event: MouseEvent)
node-drop节点拖拽放置时触发(data, node, event: DragEvent)
node-contextmenu节点右键菜单时触发(event, data, node)
check-change节点选中状态变化时触发(data, checked: boolean)
check复选框点击时触发(data, info: { checkedNodes, checkedKeys, ... })
current-change当前选中节点变化时触发(data, node)
node-expand节点展开时触发(data, node)
node-collapse节点收缩时触发(data, node)

Slots ​

插槽名说明
default自定义节点内容,作用域参数 { node },node 包含 label、key、data 等属性

Expose 方法 ​

通过组件实例可调用以下方法:

方法名说明参数
filter过滤所有树节点,过滤后的节点将被隐藏(query: string)
getCheckedNodes获取当前选中节点的数组(leafOnly?: boolean)
getCheckedKeys获取当前选中节点 key 的数组(leafOnly?: boolean)
setCheckedKeys通过 keys 设置当前勾选的节点(keys: any[])
setChecked设置某个节点是否被选中(key, checked: boolean, deep?: boolean)
setExpandedKeys设置当前展开的节点(keys: any[])
getHalfCheckedNodes获取当前半选中节点组成的数组-
getHalfCheckedKeys获取当前半选中节点的 key 数组-
getCurrentKey获取当前被选中节点的 key-
getCurrentNode获取当前被选中节点的 data-
setCurrentKey通过 key 设置某个节点的当前选中状态(key: any)
getNode通过 key 或 data 获取节点(data: any)
expandNode展开指定节点(node: any)
collapseNode折叠指定节点(node: any)
setData数据量非常庞大时,显式设置数据(data: any[])
scrollTo滚动到给定位置 (2.8.0+)(offset: number)
scrollToNode使用给定滚动策略滚动至指定节点 (2.8.0+)(key: any, strategy?: any)