Tree V2 虚拟化树beta

虚拟化树形视图,可流畅滚动任意规模的数据。

基础用法

基础树结构。

可选择

用于节点选择。

WARNING

使用 show-checkbox 时,由于 check-on-click-leaf 默认为 true, 点击末级子节点即可切换其选中状态。

禁用复选框

可将节点复选框设为禁用。

示例在 defaultProps 中声明 disabled,部分节点为 disabled: true,对应复选框禁用且不可点击。

默认展开与默认选中

节点可设置初始展开或选中。

使用 default-expanded-keysdefault-checked-keys 分别设置初始展开与初始选中节点。

node-1

自定义节点内容

可自定义节点内容,例如添加图标或按钮。

自定义节点类名

可自定义节点类名。

自定义节点图标

可为不同节点状态自定义图标。节点暴露 expandedisLeaf,可按叶子、展开、折叠等状态动态渲染图标。

树节点过滤

2.9.1 起,filter-method 的第三个参数才可用。可对树节点进行过滤。

调用树实例的 filter 并传入关键字;需配置 filter-method 作为过滤函数。

虚拟化树形控件 API

虚拟化树形控件 属性

名称说明类型默认值
data展示数据array
empty-text内容为空时展示的文本string
props配置选项,见下表object
highlight-current是否高亮当前选中节点booleanfalse
expand-on-click-node是否在点击节点时展开/收起;为 false 时仅点击箭头展开/收起booleantrue
check-on-click-node是否在点击节点时切换选中;为 false 时仅点击复选框切换booleanfalse
check-on-click-leaf是否在点击叶子节点时切换选中状态booleantrue
default-expanded-keys默认展开的节点 key 数组array
show-checkbox是否显示复选框并可被选择booleanfalse
check-strictly在显示复选框时是否取消父子关联booleanfalse
default-checked-keys默认勾选的节点 key 数组array
current-node-key当前选中节点的 keystring / number
filter-method对树节点进行筛选时执行的方法,返回 false 则隐藏该节点Function
indent相邻级节点水平缩进(像素)number16
icon自定义树节点图标组件string / Component
item-size自定义节点高度number26
scrollbar-always-on是否始终显示滚动条booleanfalse
height树容器高度number200

props

属性说明类型默认值
value每个树节点唯一标识的属性名,应在整棵树中唯一stringid
label指定节点标签为节点对象的某个属性值stringlabel
children指定子树为节点对象的某个属性值stringchildren
disabled指定节点选择框是否禁用为节点对象的某个属性值stringdisabled
class自定义节点类名string / Function

虚拟化树形控件 暴露

Tree 提供以下方法(与当前选中节点等相关)。

方法说明参数
filter过滤所有树节点,被过滤节点将隐藏(query: string)
getCheckedNodes若节点可被选择(show-checkboxtrue),返回当前选中节点数组(leafOnly: boolean)
getCheckedKeys若节点可被选择(show-checkboxtrue),返回当前选中节点的 key 数组(leafOnly: boolean)
setCheckedKeys设置勾选的节点 key(keys: TreeKey[])
setChecked设置某节点是否勾选(key: TreeKey, checked: boolean)
setExpandedKeys设置展开的节点 key(keys: TreeKey[])
getHalfCheckedNodes若节点可被选择(show-checkboxtrue),返回半选节点数组
getHalfCheckedKeys若节点可被选择(show-checkboxtrue),返回半选节点的 key 数组
getCurrentKey获取当前高亮节点 key,无高亮时为 undefined
getCurrentNode获取当前高亮节点 data,无高亮时为 undefined
setCurrentKey通过 key 设置高亮节点(key: TreeKey)
getNode根据 key 或 data 获取节点(data: TreeKey | TreeNodeData)
expandNode展开指定节点(node: TreeNode)
collapseNode收起指定节点(node: TreeNode)
setData数据量很大时,响应式数据可能导致性能问题,可通过该方法批量更新以避免(data: TreeData)
scrollTo滚动到指定偏移位置(offset: number)
scrollToNode滚动到指定节点 key,可指定滚动策略(key: TreeKey, strategy?: auto | smart | center | start | end)

虚拟化树形控件 事件

名称说明参数
node-click节点被点击时触发(data: TreeNodeData, node: TreeNode, e: MouseEvent)
node-drop拖拽放置到节点上时触发(data: TreeNodeData, node: TreeNode, e: DragEvent)
node-contextmenu节点上点击鼠标右键时触发(e: Event, data: TreeNodeData, node: TreeNode)
check-change节点选中状态变化时触发(data: TreeNodeData, checked: boolean)
check点击节点复选框后触发(data: TreeNodeData, info: { checkedKeys: TreeKey[],checkedNodes: TreeData, halfCheckedKeys: TreeKey[], halfCheckedNodes: TreeData,})
current-change当前选中节点变化时触发(data: TreeNodeData, node: TreeNode)
node-expand节点展开时触发(data: TreeNodeData, node: TreeNode)
node-collapse节点收起时触发(data: TreeNodeData, node: TreeNode)

虚拟化树形控件 插槽

名称说明类型
default自定义树节点内容object
empty数据为空时的展示内容

类型声明

显示类型声明
ts
type TreeNodeData = Record<string, any>
type TreeKey = string | number
type TreeData = TreeNodeData[]

interface TreeNode {
  key: TreeKey
  level: number
  parent?: TreeNode
  children?: TreeNode[]
  data: TreeNodeData
  disabled?: boolean
  label?: string
  isLeaf?: boolean
  expanded?: boolean
  isEffectivelyChecked?: boolean
}