Tree V2 虚拟化树beta
虚拟化树形视图,可流畅滚动任意规模的数据。
基础用法
基础树结构。
node-1
node-2
node-3
node-4
node-5
node-6
node-7
node-8
node-9
node-10
可选择
用于节点选择。
node-1
node-2
node-3
node-4
node-5
node-6
node-7
node-8
node-9
node-10
WARNING
使用 show-checkbox 时,由于 check-on-click-leaf 默认为 true, 点击末级子节点即可切换其选中状态。
禁用复选框
可将节点复选框设为禁用。
示例在 defaultProps 中声明 disabled,部分节点为 disabled: true,对应复选框禁用且不可点击。
node-1
node-2
node-3
node-4
node-5
node-6
node-7
node-8
node-9
node-10
默认展开与默认选中
节点可设置初始展开或选中。
使用 default-expanded-keys 与 default-checked-keys 分别设置初始展开与初始选中节点。
node-1-1
node-1-2
node-1-3
node-1-4
node-1-5
node-1-6
node-1-7
node-1-8
node-1-9
自定义节点内容
可自定义节点内容,例如添加图标或按钮。
[UnibootUI]node-1
[UnibootUI]node-2
[UnibootUI]node-3
[UnibootUI]node-4
[UnibootUI]node-5
[UnibootUI]node-6
[UnibootUI]node-7
[UnibootUI]node-8
[UnibootUI]node-9
[UnibootUI]node-10
自定义节点类名
可自定义节点类名。
Level one 1
Level one 2
Level one 3
自定义节点图标
可为不同节点状态自定义图标。节点暴露 expanded 与 isLeaf,可按叶子、展开、折叠等状态动态渲染图标。
node-1
node-2
node-3
node-4
node-5
node-6
node-7
node-8
node-9
node-10
树节点过滤
自 2.9.1 起,filter-method 的第三个参数才可用。可对树节点进行过滤。
调用树实例的 filter 并传入关键字;需配置 filter-method 作为过滤函数。
node-1
node-2
node-3
node-4
node-5
虚拟化树形控件 API
虚拟化树形控件 属性
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| data | 展示数据 | array | — |
| empty-text | 内容为空时展示的文本 | string | — |
| props | 配置选项,见下表 | object | — |
| highlight-current | 是否高亮当前选中节点 | boolean | false |
| expand-on-click-node | 是否在点击节点时展开/收起;为 false 时仅点击箭头展开/收起 | boolean | true |
| check-on-click-node | 是否在点击节点时切换选中;为 false 时仅点击复选框切换 | boolean | false |
| check-on-click-leaf | 是否在点击叶子节点时切换选中状态 | boolean | true |
| default-expanded-keys | 默认展开的节点 key 数组 | array | — |
| show-checkbox | 是否显示复选框并可被选择 | boolean | false |
| check-strictly | 在显示复选框时是否取消父子关联 | boolean | false |
| default-checked-keys | 默认勾选的节点 key 数组 | array | — |
| current-node-key | 当前选中节点的 key | string / number | — |
| filter-method | 对树节点进行筛选时执行的方法,返回 false 则隐藏该节点 | Function | — |
| indent | 相邻级节点水平缩进(像素) | number | 16 |
| icon | 自定义树节点图标组件 | string / Component | — |
| item-size | 自定义节点高度 | number | 26 |
| scrollbar-always-on | 是否始终显示滚动条 | boolean | false |
| height | 树容器高度 | number | 200 |
props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| value | 每个树节点唯一标识的属性名,应在整棵树中唯一 | string | id |
| label | 指定节点标签为节点对象的某个属性值 | string | label |
| children | 指定子树为节点对象的某个属性值 | string | children |
| disabled | 指定节点选择框是否禁用为节点对象的某个属性值 | string | disabled |
| class | 自定义节点类名 | string / Function | — |
虚拟化树形控件 暴露
Tree 提供以下方法(与当前选中节点等相关)。
| 方法 | 说明 | 参数 |
|---|---|---|
| filter | 过滤所有树节点,被过滤节点将隐藏 | (query: string) |
| getCheckedNodes | 若节点可被选择(show-checkbox 为 true),返回当前选中节点数组 | (leafOnly: boolean) |
| getCheckedKeys | 若节点可被选择(show-checkbox 为 true),返回当前选中节点的 key 数组 | (leafOnly: boolean) |
| setCheckedKeys | 设置勾选的节点 key | (keys: TreeKey[]) |
| setChecked | 设置某节点是否勾选 | (key: TreeKey, checked: boolean) |
| setExpandedKeys | 设置展开的节点 key | (keys: TreeKey[]) |
| getHalfCheckedNodes | 若节点可被选择(show-checkbox 为 true),返回半选节点数组 | — |
| getHalfCheckedKeys | 若节点可被选择(show-checkbox 为 true),返回半选节点的 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
}